1.相较于线程,进程所使用的系统资源更多。其原因在于地址空间。为一个进程创建一个虚拟的地址空间需要大量系统资源。线程只有一个内核对象和一个栈。
2.线程的入口函数
DWORD WINAPI ThreadFunc(PVOID pvParam){ DWORD dwResult = 0; ... return(dwResult); }
线程函数的几点说明
- 线程函数可以任意命名。
- 线程函数只有一个参数,而其意义由我们(而非操作系统)来定义。因此,我们不必担心ANSI/Unicode问题。
- 线程函数必须返回一个值,它会成为该线程的退出代码。
- 线程函数应该尽可能使用函数参数和局部变量。函数的参数和局部变量是在线程栈上创建的。
3.CreateThread函数
HANDLE CreateThread( PSECURITY_ATTRIBUTES psa, DWORD cbStackSize, PTHREAD_START_ROUTINE pfnStartAddr, PVOID pvParam, DWORD dwCreateFlags, PDWORD pdwThreadID);
调用CreateThread函数,系统从进程的地址空间中分配内存给线程栈使用。新线程在与负责创建的那个线程在相同的进程上下文中运行。因此,新线程可以访问进程内核对象的所有句柄、进程中的所有内存以及同一个进程中其他所有线程的栈。
时间: 2024-10-12 20:26:37