信号分类 不可靠信号 VS. 可靠信号 Linux信号机制基本上是从UNIX系统中继承过来的。早期UNIX系统中的信号机制比较简单和原始,后来在实践中暴露出一些问题,它的主要问题是: 1.进程每次处理信号后,就将对信号的响应设置为默认动作。在某些情况下,将导致对信号的错误处理;因此,用户如果不希望这样的操作,那么就要在信号处理函数结尾再一次调用signal(),重新安装该信号。 2....
分类:
系统相关 时间:
2014-11-22 08:11:49
阅读次数:
304
上一篇聊聊高并发(二十八)解析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
食物、药品、化妆品之间有本质的区别么?有的食物本身就是药,有些药就是食物;有些化妆品就是药,有些药就是化妆品;有些食物能当化妆品,倒是没见哪个化妆品能当食物用的。编译型代码、解释性脚本、编辑型配置,有本质的区别么? 配置和脚本都是可以重入的;而编译型语言应该是绝对不可以的。使用别人的规则,就想生活....
分类:
编程语言 时间:
2014-10-18 20:53:43
阅读次数:
173
本人 程序员一枚,没有从生到死稳重型的待在一家公司,也不是三天两头的跳槽乱入阵营,年轻气盛的乱跳槽的事也不爱干,奉劝同行的新入行的菜鸟们,选工作需慎重,跳槽更需慎重,入职也要做个多线程的程序员。知乎上看到一个关于互联网薪资数据分析的报告,拿来分享,大家共睹。
图片资料来源于100offer程序员拍卖网站。
欢迎大家吐槽,想公布自己薪资,想炫富的程序员们可以列队开始了。...
分类:
其他好文 时间:
2014-10-17 12:02:49
阅读次数:
112
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