Windows 内核模式下的线程同步

鉴于我的食言,这个月无法完成一些探索和文章的工作了,把以前研究的一点小东西贴上来充数。各位看官勿骂。


线程同步是很多帖子研究探讨过的话题,我认为写得比较好的一本书是《Windows 核心编程》,毕竟是微软的专家给出的详细的基于Windows的讲解,内容虽涉及很多Windows API,但是原理是相通的。

线程的同步我理解为有两个不同层次的同步:用户模式下的同步和内核模式下的同步。我暂且说说我对内核模式下的同步理解。二者的区别从系统级别上来讲,在于二者操作的对象在系统上的级别。从效率上来讲,用户模式下的同步性能要好于内核模式,因为内核模式需要创建、维护内核对象,这本身也是于效率、性能上有损的。

说到内核模式的线程同步,首先要说说内核模式下的等待函数:

DWORDWaitForSingleObject(HANDLEhObject,  DWORD dwMilliseconds )

WAIT_OBJECT_0

WAIT_TIME_OUT

WAIT_FAILED

DWORD WaitForMultipleObjects(DWORDdwCount,  CONST HANDLE* phObjects,   BOOL bWaitAll,    DWORD dwMilliseconds )

WAIT_OBJECT_0 + n

使用方式和返回值比较直白,不做赘述。等待系统句柄HANDLE的触发状态而已。


有了这两个函数,就可以列举一下有那些用于同步的内核对象:Event,Samaphore,Mutex,WaitableTimer



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值