读写锁 1、概述 读写锁与互斥量类似,不过读写锁允许更高的并行性。互斥量要么是锁住状态,要么是不加锁状态,而且一次只有一个线程对其加锁。读写锁可以有三种状态:读模式下加锁状态,写模式下加锁状态,不加锁状态。一次只有一个线程可以占有写模式的读写锁,但是多个线程可用同时占有读模式的读写锁。读写锁也叫做....
分类:
其他好文 时间:
2014-08-04 17:14:37
阅读次数:
220
1. 概述 条件变量和互斥量是最基本的同步形式,总是用于同步同一个进程的各个线程间同步。 当把条件变量或互斥量放在共享内存区时,可用于进程间同步。 同样的情况还有读写锁,它们都是随进程的持续性。 2.互斥锁 互斥锁指代相互排斥,用于保护临界区。多个线程和多个进程分享的共享数据。 静态初始化:stat...
分类:
其他好文 时间:
2014-08-01 22:49:32
阅读次数:
320
在windows系统中,系统本身为我们提供了很多锁。通过这些锁的使用,一方面可以加强我们对锁的认识,另外一方面可以提高代码的性能和健壮性。常用的锁以下四种:临界区,互斥量,信号量,event。 (1)临界区 临界区是最简单的一种锁。基本的临界区操作有,[cpp] view plaincopyIni....
分类:
编程语言 时间:
2014-08-01 19:16:42
阅读次数:
271
保证在某一时刻只有一个线程对数据进行操作的基本方法:(1)关中断:通过关闭时钟中断来停止线程调度(不现实)(2)数学互斥方法:Peterson算法 bakery算法(3)操作系统提供的互斥方法:临界区、互斥量、信号量等(windows)(4)cpu原子操作:把一些常用的指令设计成了原子指令,在win...
分类:
编程语言 时间:
2014-08-01 19:00:42
阅读次数:
266
在多线程程序运行过程中,可能会涉及到两个或者多个线程试图同时访问同一个资源。为了防止这种情况的发生,必须在线程使用共享资源时给资源“上锁”,以阻挡其它线程的访问。而这种机制也常常被称为互斥量,本文主要介绍它的两种方式synchronized和Lock 。
1、synchronized
当任务要执行被synchronized关键字保护的代码片段的时候,它会检查锁是否可用,然后获取锁,执行代码,释...
分类:
编程语言 时间:
2014-07-31 17:11:30
阅读次数:
235
Windows线程 1 Windows线程 Windows进程中可以执行代码的实体,Windows系统可以调度的执行代码.一个进程中至少有一个或多个线程. 每个线程是进程的一个任务分支. 2 线程的特点 2.1 每个线程有一个ID. 2.2 每个线程有自己的安全属性 2.3 每个线程有自己的内存栈. 3 进程和线程多任务 多进程实现的多任务: 由...
分类:
编程语言 时间:
2014-07-27 16:23:15
阅读次数:
404
1.互斥量(QMutex)
头文件声明: #include
互斥量声明: QMutex m_Mutex;
互斥量加锁: m_Mutex.lock();
互斥量解锁: m_Mutex.unlock();
2.等待条件(QWaitCondition)
头文件声明: #inc...
分类:
其他好文 时间:
2014-07-23 13:20:44
阅读次数:
489
临界区Critical Section(CS) 不可跨进程,效率高事件 Event 使用内核对象,可跨进程,用于通知互斥量 Mutex 使用内核对象,可跨进程,用户互斥信号量 Semaphore 使用内核对象,可跨进程,有限数量资源http://blog.csdn.net/column/deta.....
分类:
编程语言 时间:
2014-07-21 09:37:54
阅读次数:
294
二元信号量,多元信号量,互斥量,临界区。其它包括读写锁,条件变量。-1:二元信号量,适合与只能被一个线程独占访问的资源。当二元信号量处于非占用状态时,第一个试图获取该二元信号量的线程会获得该锁,并将二元信号量重置为占用状态,在未释放该锁前,其它所有试图获取该二元信号量的线程将会等待。-2:多元信号量...
分类:
编程语言 时间:
2014-07-19 14:17:46
阅读次数:
219