
C++
makefish
Graphics,Chromium
展开
-
单一锁的死锁问题
对于只有一个锁的情况,死锁发生在消费者获取锁之后一直不释放。如果每次生产者先于消费者拿到锁,譬如先启动生产者,然后等待一段时间后再去启动消费者,这个死锁是可以避免的。但是真实的情况,生产者和消费者的启动时机是内核负责调度的,谁先谁后系统没有保证。所以要考虑消费者先于生产者运行的情形该怎么避免死锁。而解决死锁的本质在于,要给生产者线程进入临界区域的时机(一般来说,消费者死锁很容易避免)。解决方式有...原创 2019-02-03 17:58:56 · 1514 阅读 · 0 评论 -
Memory order之Happens-Before
本文是作者阅读C++ Concurrency in Action和preshing.com系列文章的总结。C++ Concurrency in Action其实写的很深入浅出,但是要做到一本书或者一篇文章,把这些概念弄清楚,还是没那么容易的。读者可以结合原书,以及preshing.com的系列文章,以及本文来对比阅读分析。作者使用被封装的多线程多年,对相对底层的多线程的概念可能理解的不是很透彻,欢...原创 2019-02-03 18:07:56 · 248 阅读 · 0 评论