手机
当前位置:查字典教程网 >电脑 >电脑常识 >windows操作系统的同步机制
windows操作系统的同步机制
摘要:最近看了下windows核心编程,虽然是比较老的书,但是感觉还是蛮有用的,顺便复习了一些操作系统的知识,比如本文的进程同步机制用户模式下的线...

 最近看了下windows核心编程,虽然是比较老的书,但是感觉还是蛮有用的,顺便复习了一些操作系统的知识,比如本文的进程同步机制

用户模式下的线程同步

线程之间需要通信:

1.需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性

2.一个线程需要通知其他线程某项任务已经完成

方法一:原子访问:Interlocked系列函数

InterlockedExchangeAdd(long & ,int );

InterlockedIncrement;

InterlockedExchange;(实现旋转锁是有用)

必须保证传给这些函数的变量地址是对齐的,否则函数可能失败

interlockde函数不需要在内核模式与用户模式之间切换

旋转锁:禁用线程优先级提升

多处理器的机器旋转锁比较有用,

关键段:先循环一定次数,如果还是无法访问,线程切换至内核模式,直到资源可用

interlockedcompareexchange

方法二:关键段

CRITICAL_SECTION g_cs;

EnterCriticalSection(&g_cs)

LeaveCrititalSection(&g_cs)

关键段无法在多个进程之间对线程同步

方法三:Slim读/写锁

和关键段相似,但是区分读取线程和写入线程

SRWLOCK

用内核对象进行线程同步

在进程内核对象内部有一个布尔变量,当系统创建内核对象的时候会把这个变量的值初始化为false(未触发),当进程终止时,操作系统会把相应的内核对象中的值设置为true,表示已经触发。

等待函数:WaitForSingleObject(HANDLE,DWORD)

WaitForMultipleObjects(DWORD,CONST HANDLE* ,BOOL,DWORD)

事件内核对象

让一个线程执行初始化工作,然后出发另一个线程,让它执行余下的工作

createEvent()

OpenEvent()

SetEvent()//触发时

ResetEvetn()

可等待的计数器内核对象

createWaitableTimer()

OpenwaitableTimer()

SetWaitableTimer()//触发时

信号量

互斥量

【windows操作系统的同步机制】相关文章:

win7系统声音起伏不定的问题

怎样验证你的win7系统是否为正版

清理IOS系统iTunes软件iOS备份的方法

无需光盘windows xp系统自动修复受损文件

系统无法打开.exe可执行文件的解决方案

加强系统安全性的十个小技巧

fuser软件在Linux系统下的使用方法

怎样关闭XP系统的无用接口

win8系统下使用全屏浏览的方法

教你隐藏私密文件的四个方法

精品推荐
分类导航