首页 > 代码库 > Windows核心编程读书笔记-第六章线程基础

Windows核心编程读书笔记-第六章线程基础

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函数,系统从进程的地址空间中分配内存给线程栈使用。新线程在与负责创建的那个线程在相同的进程上下文中运行。因此,新线程可以访问进程内核对象的所有句柄、进程中的所有内存以及同一个进程中其他所有线程的栈

Windows核心编程读书笔记-第六章线程基础