上一篇聊聊高并发(二十八)解析java.util.concurrent各个组件(十) 理解ReentrantReadWriteLock可重入读-写锁 讲了可重入读写锁的基本情况和主要的方法,显示了如何实现的锁降级。但是下面几个问题没说清楚,这篇补充一下
1. 释放锁时的优先级问题,是让写锁先获得还是先让读锁先获得
2. 是否允许读线程插队
3. 是否允许写线程插队,因为读写锁一般用在大量...
分类:
编程语言 时间:
2014-11-12 11:54:21
阅读次数:
262
这篇讲讲ReentrantLock可重入锁,JUC里提供的可重入锁是基于AQS实现的阻塞式可重入锁。这篇
聊聊高并发(十六)实现一个简单的可重入锁 模拟了可重入锁的实现。可重入锁的特点是:
1. 是互斥锁,基于AQS的互斥模式实现,也就是说同时只有一个线程进入临界区,唤醒下一个线程时也只能释放一个等待线程
2. 可重入,通过设置了一个字段exclusiveOwnerThread来标示当前获...
分类:
编程语言 时间:
2014-11-11 19:21:34
阅读次数:
616
一、C语言的static关键字的两种使用方法
1)、用于函数内部修饰变量,即函数内的静态变量。这种变量的生存期长于该函数,是的函数具有一定的“状态”,使用静态变量的函数一般是不可重入的,也不是线程安全的,比如strtok()
2)用在文件级别(函数体外),修饰变量或函数,变量该变量或函数只能在文本可见,其他文件看不到,也访问不到该变量或函数。
二、C++语言的static关键字的四种用法...
分类:
编程语言 时间:
2014-11-09 16:44:24
阅读次数:
222
可重入锁指的是如果一个线程已经获得了一个锁,那么它可以多次进入这个锁,当然前提是线程需要先获得这个锁。
可重入锁是最常使用的锁,Java的内置锁就是可重入锁,使用synchronized关键字可以启用内置锁机制,比如说一个类有两个synchronized方法A和B,在A方法中调用了B方法,如果锁不是可重入的,那么访问B时需要再次竞争锁,这样会带来死锁。
public synch...
分类:
其他好文 时间:
2014-11-03 14:37:42
阅读次数:
190
锁:内置锁 (监视器锁): 每个java对象都可以做一个实现同步的锁,这些锁被成为内置锁. 获得锁的唯一途径就是进入有这个锁保护的代码块或方法重入锁: 由于内置锁是可重入的,因此如果某个线程试图获得一个以已经由他自己持有的锁, 那么这个请求就会成功.重入意味着获取锁的操作粒度是"线程",而不是"调用...
分类:
编程语言 时间:
2014-10-26 09:04:31
阅读次数:
206
java.util.concurrent.locks.Lockvoid lock() :获取这个锁,如果这个锁被其他线程所有,则阻塞void unlock():释放这个锁java.util.concurrent.locks.ReentrantLockReentrantLock():构建一个可重入锁R...
分类:
编程语言 时间:
2014-10-14 14:50:48
阅读次数:
238
一 可重入函数当一个被捕获的信号被一个进程处理时,进程执行的普通的指令序列会被一个信号处理器暂时地中断。它首先执行该信号处理程序中的指令。如果从信号处理程序返回(例如没有调用exit或longjmp),则继续执行在捕获到信号时进程正在执行的正常指令序列(这和当一个硬件中断发生是所发生的事情相似。)但...
分类:
编程语言 时间:
2014-10-12 11:19:27
阅读次数:
321
kmalloc函数的内幕
不对所获取的内存空间清零分配的区域在物理内存中也是连续的flags参数
GFP_KERNEL
在空闲内存较少时把当前进程转入休眠以等待一个页面分配内存的函数必须是可重入的
GFP_ATOMIC
用于在中断处理例程或其他运行于进程上下文之外的代码中分配内存,不会休眠
GFP_USER
用于为用户空间页分配内存,可能会休眠
GFP_...
分类:
系统相关 时间:
2014-09-28 12:14:31
阅读次数:
291
??
1信号产生原因
2.进程处理信号行为
manpage里信号3中处理方式:
SIG_IGN
SIG_DFL
默认Term动作
a signal handling function
进程处理信号
A默认处理动作
term
中断...
分类:
其他好文 时间:
2014-09-21 02:33:36
阅读次数:
295