3.7windows2000xp的同步和通信机制

3.7windows2000xp的同步和通信机制

ID:1131330

大小:171.00 KB

页数:19页

时间:2017-11-07

3.7windows2000xp的同步和通信机制_第1页
3.7windows2000xp的同步和通信机制_第2页
3.7windows2000xp的同步和通信机制_第3页
3.7windows2000xp的同步和通信机制_第4页
3.7windows2000xp的同步和通信机制_第5页
资源描述:

《3.7windows2000xp的同步和通信机制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、3.7Windows2000/XP的 同步和通信机制3.7.1Windows2000/XP的同步和互斥机制3.7.2Windows2000/XP进程通信机制3.7.1Windows2000/XP的 同步和互斥机制Windows2000/XP提供互斥对象、信号量对象和事件对象及相应系统调用,用于进程和线程的同步。同步对象都有一个用户指定的对象名称,不同进程中用同样的对象名创建或打开对象,从而获得该对象在本进程的句柄。从本质上讲,这些同步对象的能力是相同的,其区别在于适用场合和效率有所不同。CreateMutex创建互斥对象OpenMutex打开并返回一个已存在的互斥对象句柄,用于后

2、续访问。ReleaseMutex释放对互斥对象的占用,使之成为可用。信号量对象就是资源信号量,初始值所取范围在0到指定最大值之间,用于限制并发访问的线程数。相关API包括:CreateSemaphore创建一个信号量对象,在输入参数中指定初值和最大值,返回对象句柄。OpenSemaphore打开并返回一个已存在的信号量对象句柄,用于后续访问。ReleaseSemaphore释放对信号量对象的占用,使之成为可用。事件对象相当于触发器,用于通知一个或多个线程某事件的出现,它的相关API包括:CreateEvent创建一个事件对象,返回对象句柄。OpenEvent打开并返回一个已存在的

3、事件对象句柄,用于后续访问。SetEvent和PulseEvent设置指定事件对象为可用状态。ResetEvent设置指定事件对象为不可用状态。等待操作对于这三种同步对象,系统提供两个等待操作:WaitForSingleObjec可在指定的时间内等待指定对象为可用状态;WaitForMultipleObjects可在指定的时间内等待多个对象为可用状态。临界区对象(1)只能用于在同一进程内使用的临界区,同一进程内各线程对它的访问是互斥进行的。把变量说明为CRITICAL_SECTION类型,就可作为临界区使用。临界区对象(2)临界区对象相关API有:InitializeCritic

4、alSection(对临界区对象进行初始化)、EnterCriticalSection(等待占用临界区的使用权,得到使用权时返回)、TryEnterCriticalSection(非等待方式申请临界区的使用权,申请失败时返回0)、LeaveCriticalSection(释放临界区的使用权)和DeleteCriticalSection(释放与临界区对象相关的所有系统资源)。互锁变量访问互锁变量访问API相当于硬件指令,用于对整型变量的操作,可避免线程间切换对操作连续性的影响。API包括:InterlockedExchange(32位数据的先读后写原子操作)、Interlocked

5、CompareExchange(依据比较结果进行赋值的原子操作)、InterlockedExchangeAdd(先加后存结果的原子操作)、InterlockedDecrement(先减1后存结果的原子操作)和Interlockedincrement(先加1后存结果的原子操作)。3.7.2Windows2000/XP进程通信机制信号(signal)共享存储区(sharedmemory)管道(pipe)邮件槽(mailslot)套接字(socket)信号通信机制(1)信号(signal)是进程与外界的一种低级通信方式,相当于进程的软中断。进程可发送信号,每个进程都有指定的信号处理例程

6、,信号通信是单向和异步的。信号通信机制(2)信号量相关的系统调用,(1)SetConsoleCtrlHandler定义或取消本进程的信号处理例程中的用户定义例程。GenerateConsoleCrtlEvent可发送信号到与本进程共享同一控制台与控制台进程组。(2)signal用于设置中断信号处理例程,raise用于发送信号。共享存储区通信机制(1)用于进程间大数据量通信。通信的进程可任意读写共享存储区,也可在共享存储区上使用任意数据结构。进程使用共享存储区时,需要互斥和同步机制来确保数据的一致性。采用文件映射(filemapping)机制来实现共享存储区,用户进程可把整个文件映

7、射为进程虚拟地址空间的一部分来加以访问。共享存储区通信机制(2)共享存储区相关的系统调用有:CreateFileMapping(为指定文件创建一个文件映射对象)、OpenFileMapping(打开一个命名的文件映射对象)、MapViewOfFile(把文件映射到本进程的地址空间)、FlushViewOfFile(把映射地址空间的内容写到物理文件中)、UnmapViewOfFile(拆除文件与本进程地址空间的映射关系)和CloseHandle(关闭文件映射对象)。管道通信机制(1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。