Java中的锁不管是Lock还是synchronized都可以分为互斥锁和非互斥锁。 互斥锁只能被一个线程持有,其他线程只能等待锁的释放。synchronized,ReentrantLock,ReadWriteReentrantLock的WriteLock是互斥的,但ReadLock不是互斥的...
分类:
编程语言 时间:
2015-07-19 13:08:38
阅读次数:
233
说明:对多线程与互斥锁不熟悉的请参考其它
#include
#include
#include
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;/*初始化互斥锁*/
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;/*初始化条件变量*/
void *thread1(void *);
v...
分类:
编程语言 时间:
2015-07-17 16:23:19
阅读次数:
177
Mutex:互斥(体) 又称同步基元。 当创建一个应用程序类时,将同时创建一个系统范围内的命名的Mutex对象。这个互斥元在整个操作系统中都是可见的。当已经存在一个同名的互斥元时,构造函数将会输出一个布尔值。 主要应用于控制单程序运行。 比如程序代码通过检测这个布尔值来判断指定的程序实例是否启...
线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。
1、互斥锁(mutex)
通过锁机制实现线程间的同步。同一时刻只允许一个线程执行一个关键部分的代码。
int pthread_mutex_init(pthread_mutex_t *mutex,const pthre...
分类:
编程语言 时间:
2015-07-11 09:09:12
阅读次数:
151
条件变量与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一...
分类:
其他好文 时间:
2015-07-10 13:08:31
阅读次数:
92
NSLock/NSRecursiveLock/NSConditionLock/@synchronizedhttp://blog.sina.com.cn/s/blog_8c87ba3b0101ok8y.html使用NSLock类在Cocoa程序中NSLock中实现了一个简单的互斥锁。所有锁(包括NSL...
分类:
其他好文 时间:
2015-07-09 19:26:59
阅读次数:
155
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。...
分类:
编程语言 时间:
2015-07-09 11:26:05
阅读次数:
179
互斥量(mutex)互斥锁创建有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER 来静态初始化互斥锁,方法如下:pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;在LinuxThreads实...
分类:
编程语言 时间:
2015-07-08 20:25:25
阅读次数:
230
条件变量
如果说线程间的互斥锁是用来同步共享数据的访问的话,那么条件变量是用于线程之间共享数据的值。条件变量提供了一种线程之间的通知机制,当某个共享数据达到某个值时,唤醒等待这个共享数据的线程。条件变量相关函数主要 有5个:
#include
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_...
分类:
编程语言 时间:
2015-07-05 09:42:49
阅读次数:
257
互斥锁
多线程编程中,(多线程编程)可以用互斥锁(也称互斥量)可以用来保护关键代码段,以确保其独占式的访问,这有点像二进制信号量。POSIX互斥锁相关函数主要有以下5个:
#include
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);
int pthr...
分类:
编程语言 时间:
2015-07-05 09:41:42
阅读次数:
239