预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

windows操作系统的同步机制与性能windows操作系统的同步机制与性能windows操作系统的同步机制与性能最近看了下windows核心编程,虽然是比较老的书,但是感觉还是蛮有用的,顺便复习了一些操作系统的知识,比如本文的进程同步机制用户模式下的线程同步线程之间需要通信:1.需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性2.一个线程需要通知其他线程某项任务已经完成方法一:原子访问:Interlocked系列函数InterlockedExchangeAdd(long&,int);InterlockedIncrement;InterlockedExchange;(实现旋转锁是有用)必须保证传给这些函数的变量地址是对齐的,否则函数可能失败interlockde函数不需要在内核模式与用户模式之间切换旋转锁:禁用线程优先级提升多处理器的`机器旋转锁比较有用,关键段:先循环一定次数,如果还是无法访问,线程切换至内核模式,直到资源可用interlockedcompareexchange方法二:关键段CRITICAL_SECTIONg_cs;EnterCriticalSection(&g_cs)…LeaveCrititalSection(&g_cs)关键段无法在多个进程之间对线程同步方法三:Slim读/写锁和关键段相似,但是区分读取线程和写入线程SRWLOCK用内核对象进行线程同步在进程内核对象内部有一个布尔变量,当系统创建内核对象的时候会把这个变量的值初始化为false(未触发),当进程终止时,操作系统会把相应的内核对象中的值设置为true,表示已经触发。等待函数:WaitForSingleObject(HANDLE,DWORD)WaitForMultipleObjects(DWORD,CONSTHANDLE*,BOOL,DWORD)事件内核对象让一个线程执行初始化工作,然后出发另一个线程,让它执行余下的工作createEvent()OpenEvent()SetEvent()//触发时ResetEvetn()可等待的计数器内核对象createWaitableTimer()OpenwaitableTimer()SetWaitableTimer()//触发时信号量互斥量