- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章Windows2000进程管理A
第3章 Windows2000/XP 进程、线程和处理机管理;3.1 进程同步与进程间通信
3.2 线程调度;3.1 进程同步与进程间通信;3.1.1 Windows 2000/XP的进程互斥和同步;3.1.1.1 互锁变量访问
3.1.1.2 临界区对象(Critical Section)
3.1.1.3 互斥对象(Mutex)
3.1.1.4 信号量对象(Semaphore)
3.1.1.5 事件对象(Event);互锁变量访问是最基本的互斥手段,其他的互斥和共享机制都是以它为基础的。它相当于硬件TS指令。用于对整型变量的操作,可避免线程间切换对操作连续性的影响。这组互锁变量访问API包括:
InterlockedExchange进行32位数据的先读后写原子操作;
InterlockedExchangePointer对指针的Exchange原子操作;
InterlockedCompareExchange依据比较结果进行赋值的原子操作;
InterlockedCompareExchangePointer对指针的CompareExchange原子操作;
InterlockedExchangeAdd先加后存结果的原子操作;
InterlockedDecrement先减1后存结果的原子操作;
InterlockedIncrement先加1后存结果的原子操作。;下面是InterlockedExchange()的汇编结果:
17: InterlockedExchange(lCounter, lTemp);
0040109A mov esi,esp
0040109C mov eax,dword ptr [ebp-8]
0040109F push eax ; lTemp压栈
004010A0 push offset lCounter (004299ec) ; lCounter地址压栈
004010A5 call dword ptr [__imp__InterlockedExchange@8 (0042c178)]
004010AB cmp esi,esp
004010AD call __chkesp ; 这个函数就一条指令
77E66AC3 mov ecx,dword ptr [esp+4] ; 取lCounter的地址
77E66AC7 mov edx,dword ptr [esp+8] ; 取lTemp
77E66ACB mov eax,dword ptr [ecx] ; 取lCounter
77E66ACD nop
77E66ACE cmpxchg dword ptr [ecx],edx ; 比较交换指令
77E66AD1 jne 77E66ACD
77E66AD3 ret 8;3.1.1.2 临界区对象(Critical Section);3.1.1.3 互斥对象(Mutex);3.1.1.4 信号量对象(Semaphore);3.1.1.5 事件对象(Event);3.1.1.6 同步对象等待;(2) WaitForMultipleObjects在指定的时间内等待多个对象为可用状态;
DWORD WaitForMultipleObjects( DWORD nCount,
//对象句柄数组中的句柄数;
CONST HANDLE *lpHandles,
// 指向对象句柄数组的指针,数组中可包括多种对象句柄;
BOOL bWaitAll,
// 等待标志:TRUE表示所有对象同时可用,FALSE表示至少一个对象可用;
DWORD dwMilliseconds // 等待超时时限???
); ;3.1.2 Windows 2000/XP的信号(signal);3.1.2.1 SetConsoleCtrlHandler和GenerateConsoleCtrlEvent;处理信号列表(5种);3.1.2.2 signal和raise;3.1.3 Windows 2000/XP基于文件映射的共享存储区;共享存储区实例;3.1.4 Windows 2000/XP管道;命名管道:一个服务器端与一个客户进程间的通信通道;可用于不同机器上进程通信;
类型分为:字节流,消息流(报文);
访问分为:单向读,单向写,双向;
通常采用client-server模式,连接本机或网络中的两个进程
管道名字:
作为客户方(连接到一个命名管道实
文档评论(0)