操作系统管理进程,进程管理线程进程:应用程序执行和保存资源的调度单位线程:进程承载的应用程序调度资源的最小单位 thread锁:线程为解决资源争夺问题而建立的一个互斥的引用类型对象 线程同步:让线程之间使用共同资源有序,正确的进行加锁方式:1.lock(引用类型对象){}2.Monniter.Ent...
分类:
编程语言 时间:
2015-05-17 20:14:45
阅读次数:
132
1、互斥体和信号量都是为了实现同步,但是二者解决的问题不一样,也就是说应用场景不一样。2、互斥体通过加锁,对于共享的资源,大家排队,依次去访问,一个一个来。也就是说,任何时刻只有一个线程访问,其他的线程等待。3、互斥体加锁存在的问题:无法控制线程的访问顺序。考虑两个线程A,B,访问顺序可能是A-B,...
分类:
其他好文 时间:
2015-05-17 20:09:05
阅读次数:
94
并发编程中实现内存可见的两种方法比较:加锁和volatile变量...
分类:
编程语言 时间:
2015-05-17 10:49:29
阅读次数:
150
线程互斥机制Mutex变量就像一把“锁”,是线程同步和保护共享数据的主要方式
Mutex可以用来阻止竞争
Pthreads中Mutex的基本概念
在任何时候,只有一个线程能够获得Mutex
尽管几个线程想获取一个Mutex,但是只有一个线程能够成功
其他线程需要等待,直到获取Mutex的线程放弃Mutex
线程必须轮流访问需要保护的数据
线程经常利用mutex来加锁需要更新的全局变量,...
分类:
编程语言 时间:
2015-05-16 10:35:41
阅读次数:
253
原文链接
作者:Jakob Jenkov
译者:申章
校对:丁一
在java中有些情况下死锁是可以避免的。本文将展示三种用于避免死锁的技术:
加锁顺序
当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。
如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。看下面这个例子:
Thread 1: lock A ...
分类:
编程语言 时间:
2015-05-13 22:03:03
阅读次数:
187
原文链接 作者:Jakob Jenkov译者:申章 校对:丁一在java中有些情况下死锁是可以避免的。本文将展示三种用于避免死锁的技术:加锁顺序当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。看下面这个例子:T....
分类:
编程语言 时间:
2015-05-13 21:17:06
阅读次数:
179
原文链接 作者:Jakob
Jenkov 译者:申章 校对:丁一
java中死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候。
例如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发生了。线程1永远得不到B,线程2也永远得不到A,并且它们永远也不会知道发生了...
分类:
编程语言 时间:
2015-05-13 19:50:04
阅读次数:
150
原文链接作者:Jakob Jenkov译者:申章校对:丁一java中死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候。例如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发生...
分类:
编程语言 时间:
2015-05-13 19:19:33
阅读次数:
126
1.原子和非原子属性1.1>OC在定义属性时又nonatomic和atomic两种选择(1)atomic:原子属性,为setter方法加锁(默认就是atomic)(2)nonatomic:非原子属性,不会为setter加锁1.2>atomic加锁原理@property (assign,atomic)...
分类:
其他好文 时间:
2015-05-12 22:20:23
阅读次数:
128
synchronized用于给方法或者块加锁用的,只有获得该对象或者块的锁的对象才能够执行里面的代码,否则将阻塞在那里,等待该锁被释放,然后获得该锁继续执行。比如下面模拟售票的代码:/*** 模拟售车票* * @author Administrator**/public class Synchron...
分类:
其他好文 时间:
2015-05-10 23:50:15
阅读次数:
215