Windows 内核模式下的线程同步

来源:互联网 发布:西门子plc编程教学 编辑:程序博客网 时间:2024/06/06 03:35

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


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

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

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

DWORDWaitForSingleObject(HANDLEhObject,  DWORD dwMilliseconds)

WAIT_OBJECT_0

WAIT_TIME_OUT

WAIT_FAILED

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

WAIT_OBJECT_0 + n

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


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



0 0
原创粉丝点击