AQS的conditionObject实现类似object的wait/notify/notify的功能,功能大概是:
1.object维护一个监视器和一个等待队列,condition对于一个lock可以有多个condition,对于每个condition维护一个条件队列;
2.提供wait/signal/signalall功能。
来个入门demo:
public class Conditi...
分类:
其他好文 时间:
2016-05-12 14:41:04
阅读次数:
217
JAVA为简化开发者开发提供了很多并发的工具,包括各种同步器,有了JDK我们只要学会简单使用类API即可。但这并不意味着不需要探索其具体的实现机制,本文从JDK源码角度简单讲讲并发时线程竞争的公平性。 所谓公平性指所有线程对临界资源申请访问权限的成功率都一样,不会让某些线程拥有优先权。我们知道CLH Node FIFO等待队列是一个先进先出的队列,那么是否就可以说每条线程获取锁时就是...
分类:
其他好文 时间:
2016-05-11 11:28:48
阅读次数:
203
vim/etc/sysctl.conffs.file-max=51200#提高整个系统的文件限制net.ipv4.tcp_syncookies=1#表示开启SYNCookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;net.ipv4.tcp_tw_reuse=1#表示开启重用。允许将TIME-WAITsockets重新用于新..
分类:
系统相关 时间:
2016-05-03 12:55:47
阅读次数:
242
使用IAudio2SourceVoice->SubmitSourceBuffer来提交音频数据,会有一个数据队列,可以使用XAUDIO2_VOICE_STATE来获取状态,可以看到当前待播放的等待队列中还有多少Buff,提交音频数据过快的话,会导致程序崩溃,应该是因为下面的buffer最大值限制:
// Numeric boundary values
#define XAUDIO2_M...
分类:
其他好文 时间:
2016-04-29 15:48:03
阅读次数:
481
在整型信号量机制中,信号量被定义为一个整形变量。除初始化外,仅能通过两个标准的原子操作Wait(S)和Signal(S)来访问。其通常分别被称为P、V操作。 描述如下: P操作:S=S-1;如果S小于0,则进程进入等待状态,否则继续执行。 V操作:S=S+1;如果S>=0,则唤醒等待队列中的一个等待 ...
分类:
其他好文 时间:
2016-04-16 23:01:34
阅读次数:
226
今天看了下BlockingQueue的几种实现,记录下以便以后复习。 首先来看一下BlockingQueue的家族成员: BlockingQueue除了先进先出外,还有两个操作:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场 ...
分类:
其他好文 时间:
2016-04-04 19:22:19
阅读次数:
172
在计算机操作系统中,PV操作是进程管理中的难点。首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号量S的值减1,即S=S-1; ②如果S³0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。 V(S): ...
分类:
其他好文 时间:
2016-03-27 10:53:01
阅读次数:
229
在对线程池的介绍中,提到了一个非常特殊的等待队列SynchronousQueue。SynchronousQueue的容量为0,任何一个对SynchronousQueue的写需要等待一个对SynchronousQueue的读,反之亦然。因此,SynchronousQueue与其说是一个队列,不如说是一...
分类:
编程语言 时间:
2016-03-17 12:43:08
阅读次数:
185
一、阻塞 概念:在执行设备操作时,不能获取资源,则进程挂起。直到满足条件,再进行操作。挂起时,进程休眠,被从调度器的运行队列移走。 1、阻塞机制实现:睡眠 a、简单睡眠 b、手动睡眠 2、简单睡眠机制实现:等待队列 API: 1)定义等待队列头:wait_queue_head_t readq; 2)
分类:
其他好文 时间:
2016-03-09 12:34:25
阅读次数:
154
MyISAM锁调度是如何实现的呢,这也是一个很关键的问题。例如,当一个进程请求某个MyISAM表的读锁,同时另一个进程也请求同一表的写锁,此时MySQL将会如优先处理进程呢?通过研究表明,写进程将先获得锁(即使读请求先到锁等待队列)。但这也造成一个很大的缺陷,即大量的写操作会造成查询操作很难获得读锁
分类:
其他好文 时间:
2016-02-22 16:37:43
阅读次数:
144