以下内容转自http://ifeve.com/locks/: 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchron ...
分类:
编程语言 时间:
2017-06-16 19:28:14
阅读次数:
191
以下内容转自http://ifeve.com/starvation-and-fairness/: 如果一个线程因为CPU时间全部被其他线程抢走而得不到CPU运行时间,这种状态被称之为“饥饿”。而该线程被“饥饿致死”正是因为它得不到CPU运行时间的机会。解决饥饿的方案被称之为“公平性”–即所有线程均能 ...
分类:
编程语言 时间:
2017-06-16 13:30:34
阅读次数:
228
一、可重入函数 1.可重入函数介绍 main函数调?insert函数向?个链表head中插?节点node1,插?操作分为两步,刚做完第?步的 时候,因为硬件中断使进程切换到内核,再次回?户态之前检查到有信号待处理,于是切换 到sighandler函数,sighandler也调?insert函数向同? ...
分类:
编程语言 时间:
2017-06-15 14:22:25
阅读次数:
231
C++标准库之mutex 互斥锁有可重入、不可重入之分。C++标准库中用mutex表示不可重入的互斥锁,用recursive_mutex表示可重入的互斥锁。为这两个类增加根据时间来阻塞线程的能力,就又有了两个新的互斥锁:timed_mutex(不可重入的锁)、recursive_timed_mute ...
分类:
编程语言 时间:
2017-06-14 14:25:15
阅读次数:
144
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两 ...
分类:
其他好文 时间:
2017-06-13 21:45:11
阅读次数:
214
可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。在JAVA环境下 ReentrantLock 和synchronized 都是 可重入锁。 下面是使用实例: 两个例子最后的结果都是正确的,即 同一个线程id被连续输出两次。 结果如下: Th ...
分类:
其他好文 时间:
2017-06-09 23:41:11
阅读次数:
215
关系性锁: Lock: 锁可以保证线程的执行是安全的,使线程在执行时,只有执行完一个线程才能执行其他线程。任何时刻只有一个线程才能进入临界区,一旦一个线程封锁了锁对象,其他线程将无法通过lock语句。锁是可重入的,线程可以重复获得持有的锁。锁保持一个持有计数来跟踪锁的嵌套调用。每一次调用lock都要 ...
分类:
编程语言 时间:
2017-06-08 13:13:27
阅读次数:
153
Java并发包的locks包里的锁基本上已经介绍得差不多了,ReentrantLock重入锁是个关键,在清楚的了解了同步器AQS的运行机制后,实际上再分析这些锁就会显得容易得多,这章节主讲另外一个重要的锁——ReentrantReadWriteLock读写锁。 ReentrantLock是一个独占锁 ...
分类:
其他好文 时间:
2017-06-05 00:22:04
阅读次数:
236
本章主要介绍Linux内核的内存管理。 kmalloc函数的内幕 不正确所获取的内存空间清零分配的区域在物理内存中也是连续的flags參数 <linux/slab.h><linux/gfp.h> GFP_KERNEL 在空暇内存较少时把当前进程转入休眠以等待一个页面分配内存的函数必须是可重入的 GF ...
分类:
系统相关 时间:
2017-06-03 09:48:56
阅读次数:
251
目录 1.synchronized同步锁 2.ReentrantLock重入锁 3.ReadWriteLock读写锁 4.StampedLock戳锁(目前没找到合适的名字,先这么叫吧...) 5.总结 正文分割线 为了更好的支持并发程序,JDK内部提供了多种锁。本文总结4种锁。 1.synchron ...
分类:
其他好文 时间:
2017-06-01 19:30:53
阅读次数:
1725