二元信号量,多元信号量,互斥量,临界区。其它包括读写锁,条件变量。-1:二元信号量,适合与只能被一个线程独占访问的资源。当二元信号量处于非占用状态时,第一个试图获取该二元信号量的线程会获得该锁,并将二元信号量重置为占用状态,在未释放该锁前,其它所有试图获取该二元信号量的线程将会等待。-2:多元信号量...
分类:
编程语言 时间:
2014-07-19 14:17:46
阅读次数:
219
一、进程同步与互斥的基本概念
1.基本概念
在多道程序系统中,由于进程,各进程之间有两种形式的制约关系:
(1)间接相互制约– 源于资源共享 -互斥。
(2)直接相互制约– 源于进程合作 -同步。
进程同步:主要源于进程合作,为进程之间的直接制约关系。
进程互斥:主要源于资源共享,是进程之间的间接制约关系。
临界资源:一次只允许一个进程使用的资源称为临界资源,如打印机、公共变量等。
临界区:在每个进程中,访问临界资源的那段程序称为临界区。
2.同步机制应遵循的准...
分类:
其他好文 时间:
2014-07-19 02:24:35
阅读次数:
286
所谓critical sections 意指一小块“用来处理一份被共享之资源”的程序代码。你可能必须在程序的许多地方处理这一块可共享的资源。所有这些程序代码可以被同一个critical section 保护起来。为了阻止问题发生,一次只能有一个线程获准进入critical section 中.cri...
分类:
编程语言 时间:
2014-07-18 15:03:55
阅读次数:
308
竞争条件
两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,称为竞争条件。凡涉及到资源的共享时就容易发生这样的事情。解决的办法是设立临界区,让进程互斥地访问共享资源。一个好的避免竞争条件的方案,必须满足4个条件:
任何两个进程不能同时处于临界区。不应对CPU的速度和数量做任何假设。临界区外运行的进程不得阻塞其它进程。不得让进程无限期等待进入临界区。
忙...
分类:
其他好文 时间:
2014-07-13 15:52:18
阅读次数:
256
java线程 同步临界区:thinking in java4 21.3.5
thinking in java 4免费下载:http://download.csdn.net/detail/liangrui1988/7580155...
分类:
编程语言 时间:
2014-07-13 15:29:38
阅读次数:
257
众所周知,windows平台上实现线程同步,或者说资源的加锁与解锁的方法有内核事件、临界区、互斥量、信号量,甚至interlocked系列函数等多种手段。但是在日常的编程中,我们使用这些手段对 “多个线程同时对同一个资源进行读写”
的时候,在读写之前先要对资源假锁,读写完之后要对资源解锁。
设想这样一种情况,有一个ftp服务器,每天有很频繁的对这个ftp服务的文件进行下载,但是几乎好几天才会对...
大话Linux内核中锁机制之信号量、读写信号量在上一篇博文中笔者分析了关于内存屏障、读写自旋锁以及顺序锁的相关内容,本篇博文将着重讨论有关信号量、读写信号量的内容。六、信号量关于信号量的内容,实际上它是与自旋锁类似的概念,只有得到信号量的进程才能执行临界区的代码;不同的是获取不到信号量时,进程不会原...
分类:
系统相关 时间:
2014-06-30 21:56:16
阅读次数:
485
C#中的lock语句是怎么回事,有什么作用?C#中的lock语句将lock中的语句块视为临界区,让多线程访问临界区代码时,必须顺序访问。他的作用是在多线程环境下,确保临界区中的对象只被一个线程操作,防止出现对象被多次改变情况。注意的地方有:lock对象必须是一个不可变对象,否则无法阻止另一个线程进入...
分类:
其他好文 时间:
2014-06-26 00:58:50
阅读次数:
354
信号量semaphore
是一个变量,控制着对公共资源或者临界区的访问。信号量维护着一个计数器,指定可同时访问资源或者进入临界区的线程数。
每次有一个线程获得信号量时,计数器-1。若计数器为0,其他线程就停止访问信号量,直到另一个线程释放信号量。...
分类:
编程语言 时间:
2014-06-24 17:49:06
阅读次数:
256
1 #include "iostream" 2 #include "windows.h" 3 #include "cstring" 4 using namespace std; 5 6 7 static int g_nIndex=0; 8 const int MAX_TIMES=10; 9 s...