设为首页 加入收藏

TOP

10.2.1 进程间互斥体和进程内互斥体
2013-10-07 15:04:11 来源: 作者: 【 】 浏览:86
Tags:10.2.1 进程

10.2.1  进程间互斥体和进程内互斥体

互斥体是用于守护临界区的最常见形式的同步对象,并且,取决于操作系统,互斥体可以被分为两种:进程间的和进程内的。进程间互斥体是指可能被不止一个进程中的代码引用的互斥体,从而可以提供进程间的同步。在Win32上,这类互斥体通常是通过调用CreateMutex()(同时对其进行命名)来创建的。于是其他进程就可以通过互斥体的名字来对它进行访问(利用CreateMutex()或OpenMutex())1。通过PTHREADS[Bute1997]这个UNIX POSIX标准线程库,一个互斥体可以通过一次进程分叉1传递给子进程,或者还可以通过内存映射来共享。

相比之下,进程内互斥体只对同一进程中的线程是可见的。由于它们不必跨进程边界存在,因而它们的状态可以被维持在本进程空间中,因此可以部分乃至完全避免因陷入内核而导致的高昂开销。Win32上有一个被称为CRITICAL_SECTION的构造,这是一种轻量级的机制,用于将大部分的操作保持在内核之外,并且仅当(互斥体的)所有权需要转移给另一个线程时才进行必要的内核调用。通过使用进程内互斥体可以节省可观的性能损耗,表10.1也说明了这一点,其结果是基于一个单线程的可执行体。后面我们会看到当应用程序中存在多线程时CRITICAL_ SECTION如何工作。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Imperfect C++中文版 译序二 下一篇10.3.1 基于互斥体的原子整型

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: