线程之间的同步,除了互斥(前面介绍的互斥锁)之外,还存在协作关系,下面我们就介绍一下java线程间常见的一些协作方式。一、内置条件队列正如每个Java对象都可以作为一个内置锁,每个对象也可以作为一个条件队列,称为内置条件队列,Object.wait()、notify()/notifyAll()构成了内置条件队列的API。需要注意的是,调用任何对象X的内置条件队列的API都必须要先获得该对象X的内置...
分类:
编程语言 时间:
2016-04-03 17:38:34
阅读次数:
268
在学习 Linux® 的过程中,您也许接触过并发(concurrency)、临界段(critical section)和锁定,但是如何在内核中使用这些概念呢?本文讨论了 2.6 版内核中可用的锁定机制,包括原子运算符(atomic operator)、自旋锁(spinlock)、读/写锁(reader/writer lock)和内核信号量(kernel semaphore)。 本文还探讨了每种机制...
分类:
系统相关 时间:
2016-04-01 18:22:32
阅读次数:
267
1. 什么是互斥量
互斥量从本质上说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁以后,任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所以在该互斥锁上的阻塞线程都会变成可进行状态,第一个变成运行状态的线程可以对互斥量加锁,其他线程在次被阻塞,等待下次运行状态。
pthr...
分类:
编程语言 时间:
2016-03-31 11:05:35
阅读次数:
259
#include
#include "errors.h"
typedef struct stage_tag{ //流水线的工作单元结构体
pthread_mutex_t mutex; //保护当前工作单元数据的互斥锁
pthread_cond_t avail; //等待当前工作单元存储数据可用的条件变量
pthread_cond_t ready; //等待当前工作单元可处理...
分类:
编程语言 时间:
2016-03-26 07:33:59
阅读次数:
255
多线程同步 一、什么是同步 多个线程按照规定的顺序来执行,即为线程同步。 1.1线程同步方式一 通过互斥锁的方式实现线程同步,可以实现但是执行效率比较低(sync.c) 1.2线程同步方式二 使用条件变量,可以使CPU利用率提高(sync1.c) 1.3条件变量 初始化: pthread_cond_
分类:
编程语言 时间:
2016-03-22 12:04:44
阅读次数:
178
本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:基本概念ReentrantLock数据结构参考代码获取公平锁(基于JDK1.7.0_40) 一. tryAcquire() 二. addWaiter() 三. acquireQueued() 四. selfInter
分类:
编程语言 时间:
2016-03-21 12:07:24
阅读次数:
461
本章对ReentrantLock包进行基本介绍,这一章主要对ReentrantLock进行概括性的介绍,内容包括:ReentrantLock介绍ReentrantLock函数列表ReentrantLock示例在后面的两章,会分别介绍ReentrantLock的两个子类(公平锁和非公平锁)的实现原理。
分类:
编程语言 时间:
2016-03-21 11:57:49
阅读次数:
178
pthread_cond_t my_condition = PTHREAD_COND_INITIALIZER; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // 互斥锁和条件等待 解决生产者和消费者模型 条件等待模型//socket连接池。。
分类:
系统相关 时间:
2016-03-17 14:39:39
阅读次数:
175
多个进程尝试去在指定的目录下去创建一个临时性(Ephemeral)结点 /locks/my_lock ZooKeeper能保证,只会有一个进程成功创建该结点,创建结点成功的进程就是抢到锁的进程,假设该进程为A 其它进程都对/locks/my_lock进行Watch 当A进程不再需要锁,可以显式删除/...
分类:
其他好文 时间:
2016-03-16 20:43:56
阅读次数:
256
本节内容 一、进程与线程区别 1.1 什么是线程 1.2 什么是进程 1.3 进程与线程的区别 二、Python GIL全局解释器锁 三、线程 3.1 threading模块 3.2 Join & Daemon 3.3 线程锁(互斥锁Mutex) 3.4 RLock(递归锁) 3.5 Semapho...
分类:
编程语言 时间:
2016-03-14 01:33:19
阅读次数:
395