SpinLock 自旋锁spinlock 用于CPU同步, 它的实现是基于CPU锁定数据总线的指令.当某个CPU锁住数据总线后, 它读一个内存单元(spinlock_t)来判断这个spinlock 是否已经被别的CPU锁住.如果否, 它写进一个特定值, 表示锁定成功, 然后返回.如果是, 它会重复以...
分类:
其他好文 时间:
2014-08-17 01:04:11
阅读次数:
335
自旋锁和相互排斥锁是多线程编程中的两个重要概念。他们都能用来锁定一些共享资源,以阻止影响数据一致性的并发訪问。可是他们之间确实存在差别,那么这些差别是什么?1理论理论上,当一个线程试图获取一个被锁定的相互排斥锁时,该操作会失败然后该线程会进入睡眠,这样就能立即让还有一个线程执行。当持有相互排斥锁的线...
分类:
其他好文 时间:
2014-08-15 12:27:08
阅读次数:
190
互斥锁通信机制
基本原理
互斥锁以排他方式防止共享数据被并发访问,互斥锁是一个二元变量,状态为开(0)和关(1),将某个共享资源与某个互斥锁逻辑上绑定之后,对该资源的访问操作如下:
(1)在访问该资源之前需要首先申请互斥锁,如果锁处于开状态,则申请得到锁并立即上锁(关),防止其他进程访问资源,如果锁处于关,则默认阻塞等待.
(2)只有锁定该互斥锁的进程才能释放该互斥锁.
互斥量类型声...
分类:
编程语言 时间:
2014-08-15 10:47:48
阅读次数:
304
静态工具方法并发时候不能简单的用同步关键字来同步方法,因为静态方法是类级别的方法,锁定的是这个类class本身,这样的结果就是任何一个同步的静态方法运行,都会导致其他同步方法调用的阻塞。这个也是问题所在。这里给出一个简单的方法来避免这个问题:通过给每个方法一个锁..
分类:
其他好文 时间:
2014-08-14 20:55:19
阅读次数:
150
虚拟机不能切换出窗口是因为虚拟机已经把鼠标的USB加载进虚拟机的系统,外部的主系统就失去对鼠标的控制,把虚拟机的USB鼠标取消掉就好。
分类:
其他好文 时间:
2014-08-14 20:54:09
阅读次数:
149
一直以来对于lock关键字的用法都存有疑惑,也从网上看到很多关于他的资料包括MSDN,无奈MSDN讲述的真是让人上火。今天决定小小研究一下一直都知道lock是锁定某一变量从而实现对某一代码段的独占执行。但是对于lock(this)、lock(typeof(类名))、lock(字符串)、lock(公有...
分类:
其他好文 时间:
2014-08-14 20:21:09
阅读次数:
231
近期做一个项目需要用到UDP发送广播包给嵌入式端的程序并要求其作出相应的反馈,一开始非常顺利。但到了测试通用性的阶段发现有的电脑无法发送出UDP广播包,进而也就是无法跟嵌入式端交互(发现并将问题锁定在此就已经花费了非常非常非常多的心血!其中可以ping通嵌入式端这点让人纠结了很久)。在问题锁定了之后第一个怀疑的是防火墙,然后是杀毒软件等等,将电脑裸奔满怀希望开启软件之后依然是那副尿性。最后百无聊赖...
分类:
其他好文 时间:
2014-08-13 22:28:27
阅读次数:
378
@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改。这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其它线程访问,起到线程的保护作用。 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用。Objective-C...
分类:
其他好文 时间:
2014-08-13 12:20:36
阅读次数:
261
有时候从网上下来的项目示例,打开时页面会有莫名的找不到引用的报错,而dll文件确实存在,这有可能是文件被保护锁定了,找到该dll文件右键属性点击解除锁定,重新生成一下项目就可以了
在linux系统中可以利用nohup来执行任何命令,并把命令自动调到linux后台运行,不锁定当前ssh窗口,也不会被ctrl + c,alt + F4之类打断程序的动行。如:nohup java -jar server.jar &详细参考:http://www.2cto.com/os/201301...
分类:
系统相关 时间:
2014-08-12 18:38:54
阅读次数:
285