多线程之一

线程状态:

  • 运行态
  • 就绪态
  • 阻塞态

多线程:

  • 主线程处理界面,消息循环
  • 创建子线程去执行非界面非消息循环,特别是一些耗时的任务
  • 相关API
    • 创建线程 CreateThread
    • 退出线程 ExitThread
    • 挂起线程 SuspenedTread
    • 恢复线程 ResumeThread
    • 终止线程 TerminateThread
    • 获取当前进程句柄 GetCurrentThread
    • 获取线程退出码 GetExitCodeThread
      -等待内核对象触发 WaitForSingleObject();
GetCurrentThread 伪句柄  “-20xFFFFFFFe
GetCurrentProcess进程的伪句柄 “-10xFFFFFFFF
"function retrieves a pseudo handle for the current process."

挂起线程 SuspenedTread 引用计数
恢复线程 ResumeThread 
ps:线程挂起一次然后恢复一次,程序会跳过WaitForSingleObject 实验

通过PID 可以获取线程句柄 OpenThread
int main()
{
  Handle hThread = CreateThread()
  //等待事件发生
  WaitForSingleObject(hThread);
  GetExitCodeThread()//即return 的值,线程是函数,有返回值
  CloseHandle(hThread);//内核对象采用引用计数,每次引用加1
  /*
  内核状态有状态属性:触发态,非触发态
  线程结束的时候有个信号,msdn中为signaled state
  等待某个对象有信号
  */

}

一个线程正常退出,系统会做一些列操作

  • 引用计数会-1
  • 线程内核对象状态变为已通知
  • 给出退出码

ExitThread() <—-> DLL_Main Attach Detach

线程之间的通讯
全局变量
发消息
一般工作线程没有消息队列,一般用于工作线程向主线程发送消息
如果工作线程也有界面,那么工作线程也有消息队列

事件对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值