一:悲观锁 悲观锁,就是不管是否发生多线程冲突,只要存在这种可能,就每次访问都加锁,加锁就会导致锁之间的争夺,有争夺就会有输赢,输者等待。 syncrhoized是一种独占锁,即:占用该锁的线程才可以执行,申请该锁的线程就只能挂起等待,直到占用锁的线程释放锁才唤醒,拿到锁并执行。由于在进程挂起和恢复 ...
分类:
编程语言 时间:
2017-03-16 21:25:52
阅读次数:
217
乐观锁 悲观锁 独占锁 共享锁 阻塞算法 非阻塞算法 自旋锁 AQS CLH队列锁 MCS队列锁 Ticket队列锁 SMP NUMA CAS ABA问题 原子变量:AtomicReference AtomicInteger AtomicReferenceFieldUpdater ...
分类:
编程语言 时间:
2017-02-25 15:56:44
阅读次数:
164
1.原子操作 - 概念:该操作绝不会在执行完毕前被任何任务或事件打断 - 使用注意:在原有的字符设备驱动的open函数中增加原子操作判断相关的代码,在关闭函数中释放原子操作。其余不变。也可以放在write中 - 相关api省略 2.信号量 - 概念:信号量在创建时初始化,表示同时有几个任务访问该信号 ...
分类:
其他好文 时间:
2017-02-17 00:05:12
阅读次数:
165
两种锁的加锁原理 互斥锁:线程会从sleep(加锁)——>running(解锁),过程中有上下文的切换,cpu的抢占,信号的发送等开销。 自旋锁:线程一直是running(加锁——>解锁),死循环检测锁的标志位,机制不复杂。 两种锁的区别 互斥锁的起始原始开销要高于自旋锁,但是基本是一劳永逸,临界区 ...
分类:
其他好文 时间:
2017-02-14 13:58:29
阅读次数:
152
个人理解: 信号量(进程间的通信机制(单一个数的信号),与消息邮箱,消息队列,机理类同,量不同,)用信号量肯定掉cpu; 自旋锁:保护区域不掉cpu,持续查找,等待(不可用时域长状态); 切记: 时域范围: 在进程间的通信机制函数状态 ∩ 锁 = 0; 互斥锁与自旋锁 互斥锁:线程会从sleep(加 ...
分类:
其他好文 时间:
2017-02-14 13:56:05
阅读次数:
145
epoll的红黑树由一个互斥量保护,ready list是自旋锁保护的。 ready list涉及到add\mod\wait 红黑树涉及到add\mod\del 每一个epoll对象都有一个独立的eventpoll结构体,用于存放通过epoll_ctl方法向epoll对象中添加进来的事件。这些事件都 ...
分类:
其他好文 时间:
2017-02-13 12:28:32
阅读次数:
157
1、原子属性: 1-1、nonatomic与atomic: nonatomic : 非原子属性; atomic : 原子属性; 线程安全的,针对多线程设计的属性修饰符,是默认值. 保证同一时间只有一个线程能够写入,但是同一个时间多个线程都可以读取; 单写多读 : 单个线程写入write,多个线程可以 ...
分类:
移动开发 时间:
2017-02-05 15:17:32
阅读次数:
260
访问共享资源的代码区块叫“临界区”,临界区需要以某种互斥机制加以保护:自旋锁、信号量等。互斥访问:一个执行单元在访问共享资源的时候,其他的执行单元被禁止访问。 信号量:在Liunx中的信号量是一种睡眠锁。假如进程A先持有信号量F,然后进程B试图获取已经被进程A持有的信号量F时(假如信号量F资源值为1 ...
分类:
系统相关 时间:
2017-01-19 02:50:52
阅读次数:
191
阿里一面:1. 入场就是红黑树,B数2. apache和nginx源码看过多少,平时看过什么技术论坛,还有没有看过更多的开源代码3. pthread 到自旋锁4. hadoop源码看过没5. 为什么选择TCP而不是直接用服务器6. 你们的大数据怎么处理的,还怎么优化,说了个公司业务决定分布式是不可能 ...
分类:
其他好文 时间:
2017-01-08 13:16:40
阅读次数:
174
目标:实现同一时刻只能有一个进程使用同一个设备,例如:只能有一个进程,在同一时刻里使用/dev/buttons这个设备。 使用linux互斥机制实现同一时刻只能有一个进程使用某个设备。 linux互斥机制有原子变量、互斥锁、信号量、自旋锁、读写锁等等 一、原子操作: 原子操作指的是在执行过程中不会被 ...
分类:
其他好文 时间:
2017-01-06 13:03:44
阅读次数:
188