(关于C++多线程问题)具体看CreateThread()函数

CreateThread()里的六个参数里的第3个和第四个参数(LPTHREAD_START_ROUTINE lpStartAddress和 LPVOID lpParameter)要怎么填?另外还要定义什么东西?还有填进去的东西到底是什么意思?

慕森卡
浏览 147回答 1
1回答

翻过高山走不出你

当使用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  );
打开App,查看更多内容
随时随地看视频慕课网APP