在使用多线程的时候,往往存在一定的公共数据,为了避免多个线程同时操作同一数据,我们需要为线程加锁。加锁的原理:每一个引用类型的对象都有一个同步索引块,指示当前使用该对象的线程数,每个线程执行到Lock语句块的时候就会判断当前锁定项(这里是this,当前窗体对象)的同步索引块是否等于0(即没有线程.....
分类:
编程语言 时间:
2014-06-28 18:33:22
阅读次数:
192
通过终端安装程序sudo apt-get install xxx时出错:E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)E: Unable to lock the admini...
分类:
其他好文 时间:
2014-06-28 16:06:36
阅读次数:
198
1.GIL与线程调度
Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(Global Interpreter Lock)来互斥线程对Python虚拟机的使用
为了支持多线程机制,一个基本的要求就是需要实现不同线程对共享资源访问的互斥,所以引入了GIL。
GIL:在一个线程拥有了解释器的访问权之后,其他的所有线程都必须等待它释放解释器的访问权,即使这些线程的下一条指令并不会互相影响。
在调用任何Python C API之前,要先获得GIL
GIL缺点:多处理器退化为单处理器;优...
分类:
编程语言 时间:
2014-06-25 19:48:52
阅读次数:
358
本文分析的是llvm libc++的实现:http://libcxx.llvm.org/
C++11中的各种mutex, lock对象,实际上都是对posix的mutex,condition的封装。不过里面也有很多细节值得学习。
std::mutex
先来看下std::mutex:
包增了一个pthread_mutex_t __m_,很简单,每个函数该干嘛就干嘛。
class mutex...
分类:
编程语言 时间:
2014-06-25 19:22:54
阅读次数:
338
其实所有的死锁最深层的原因就是一个:资源竞争表现一: 一个用户A 访问表A(锁住了表A),然后又访问表B 另一个用户B 访问表B(锁住了表B),然后企图访问表A 这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了 同样用户B要等用户A释放...
分类:
其他好文 时间:
2014-06-25 13:34:10
阅读次数:
313
在ubuntu下启动firefox报错 Firefox is already running, but is not responding. To open a new window, you must first close the existing Firefox process, or restart your system.
解决:
终端输入 killall firefox...
分类:
其他好文 时间:
2014-06-24 17:08:34
阅读次数:
203
阅读对象本文假设读者有几下Skills[1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念。[2]熟悉C++开发,在开发工具中,能够编译、设置boost::thread库。环境[1]Visual Studio 2005/2008 with SP1[2]boost1.39/1.40...
分类:
其他好文 时间:
2014-06-24 10:40:26
阅读次数:
235
Preemption Context Switches度量的是操作系统任务调度器将处理器中的一个正在运行的线程切换为另一个更高优先级的线程的次数,即发生抢占的次数。
Synchronization context switches度量的是由于显式调用线程同步API而发生线程切换的次数,如给多线程共享的变量加锁,多线程共同去修改,有些线程要阻塞在lock,直至占用锁的线程释放lock,这个度量反映...
分类:
其他好文 时间:
2014-06-22 19:40:21
阅读次数:
341
题意:给你初始4个数字和目标4个数字,问是否能由初始经过变换到目标数字;
变换规则:每个数字可以加1(9+1=1)或减1(1-1=9),或交换相邻的数字(最左和最右不是相邻的)。
双向广搜:分别对初始和目标数字进行广搜,vis数组用1和2标记两种已搜索的数字,用mp数组记录状态的步数。
当从前往后搜可以到达2或从后往前搜可以到达1状态则就可以了。。。
#in...
分类:
其他好文 时间:
2014-06-22 19:38:26
阅读次数:
231
一个很简单的问题,之所以让我对这个问题进行总结,一是因为没我想象的简单,在处理的过程中遇到了一些磕磕碰碰,甚至绕了一些弯路,二是引发了我对故障处理时的一些思考。...
分类:
其他好文 时间:
2014-06-22 00:29:39
阅读次数:
225