win32多线程设计总结

近期拜读了win32多线程程序设计,总结了这么几点

  多线程的主要问题在于线程同步,而线程调用由操作系统实现,因此实现线程同步必须有操作系统提供支持,书中提到过以前我所用过的busy loop与sleep结构来实现线程同步,当时我的感觉就是没有其他办法了,直到遇上了wait系列API,下面就来总结一下各种线程同步方法

     1.临界区的使用,优点不需要产生系统内核对象,速度快,效率高。关键API:

    

  void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection)  // 初始化临界区

  void EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)       // 进入临界区

  void LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)       // 离开临界区

  void DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)      // 释放临界区资源

  2.互斥量,修复了临界区所不能解决的死锁问题,产生内核对象。由于是内核对象可以被多个进程共享然而并没什么卵用 关键API

  createmutex   waitforsingleobject   waitformultipleobject

     3.信号量,解决了一个资源不能同时被多个线程共享的问题。可以看作互斥量的父集 关键API

   createSemaphore

      4事件,能由线程自己确实何时更改激发状态,可以被用来设计自己的同步机制 关键API

    createEvent

     其他

           读写控制锁,针对单个变量进行原操作的interlockedincrement等等

  这本书缺点很明显。不够深入,大概只计了API的调用,深层次原理介绍不多,对于开发应用程序来说够了,对了逆向人员来说,了解下就差不多了。

  还有点啰嗦,说实在的!

 

   

转载于:https://www.cnblogs.com/distanceblog/p/5260796.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值