为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++ C
慕森卡 2022-03-11 11:07:30
CreateThread()里的六个参数里的第3个和第四个参数(LPTHREAD_START_ROUTINE lpStartAddress和 LPVOID lpParameter)要怎么填?另外还要定义什么东西?还有填进去的东西到底是什么意思?
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

当使用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
  );



查看完整回答
反对 回复 2022-03-15
  • 1 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信