Windows编程——线程篇(一):线程简介
线程由2部分构成:线程的内核对象和线程堆栈。操作系统使用内核对象对线程进行管理,堆栈则用于维护线程在执行代码时需要的所有函数参数和局部变量。一个进程中的多个线程之间共享这个进程的代码段、地址空间、内核对象句柄等。
线程的启动
可以使用createthread、__beginthread函数来创建一个线程。但是一般建议使用beginthread,虽然它也是调用的createthread函数来创建线程的。但是beginthread会另外初始化C运行时库,保证C库的线程安全。比如errno一般是全局共享的,如果使用createthread则所有线程都共享这一个errno,但是如果使用beginthread则每个线程都有自己的errno不会互相影响。
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
uintptr_t _beginthread(
_beginthread_proc_type _StartAddress,
unsigned _StackSize,
void* _ArgList
);
uintptr_t _beginthreadex(
void* _Security,
unsigned _S