当使用CreateProcess调用时,系统将创建一个进程和一个主线程。CreateThread将在主线程的基础上创建一个新线程,大致做如下步骤: 1在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回 2把线程退出码置为STILL_ACTIVE,把线程挂起计数置1 3分配context结构 4分配两页的物理存储以准备栈,保护页设置为PAGE_READWRITE,第2页设为PAGE_GUARD 5lpStartAddr和lpvThread值被放在栈顶,使它们成为传送给StartOfThread的参数 6把context结构的栈指针指向栈顶(第5步)指令指针指向startOfThread函数 MSDN中CreateThread原型: HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // 线程安全属性 DWORD dwStackSize, // 堆栈大小 LPTHREAD_START_ROUTINE lpStartAddress, // 线程函数 LPVOID lpParameter, //线程参数 DWORD dwCreationFlags, // 线程创建属性 LPDWORD lpThreadId // 线程ID );
(C++多线程问题)CreateThread(…
最新推荐文章于 2023-01-20 17:02:10 发布