
多线程/高性能计算
madbunny
这个作者很懒,什么都没留下…
展开
-
关于丢失signal的发生过程
关于条件变量的使用,有一种需要注意的情况。条件变量的原理是: wait函数将当前线程挂起,加入到等待队列中。 wake函数将某个或者所有被wait函数挂起的线程复活。所以,wake执行时一定要保证所有该wait的都已经wait了!!!!!!也就是说被挂在等待队列中了。原创 2016-04-28 20:28:27 · 825 阅读 · 0 评论 -
使用条件变量时为啥一定要指定一个锁?
今天看代码的时候突然发现了这个问题。 条件变量wait的时候必须指定一个已经get到了的锁。 去网上搜了一下发现至少是中文范围内,全网都不知道为什么。后来我想了一下,应该是这样的。先看使用情景。 以盖小区为例。 a负责盖房子,x负责装窗子,y负责粉刷,z负责安装电路。 所以4个人做事时,房子所在的土地就是被竞争的资源。我们来看看小区怎么个盖法。 肯定要a先工作,xyz等待a完工才能一个一原创 2016-04-28 01:34:25 · 5373 阅读 · 2 评论 -
QT、boost线程的挂起
前一阵子写了一个后台不断求质数的程序。一共实现两个功能:一、运行的开始/暂停;二、重新开始计算。其中开始/暂停部分需要挂起负责查找质数的线程。但是我看了好几遍文档发现居然没有挂起线程的函数……搜索了很久发现,原来POSIX线程模型中是不包括挂起功能的。因为挂起一个现成会导致该线程占有的资源得不到释放。只要线程还在挂起,那么它占有的资源就一直处于被占用状态。所以POSIX模型把这个权利交给了操作原创 2011-12-12 16:49:39 · 4176 阅读 · 0 评论