说到Barrier,很多语言中已经是标准库中自带的概念,一般情况下,只需要直接使用就行了。而最近一些机缘巧合的机会,我需要在c++中使用这么个玩意儿。但是c++标准库里还没有这个概念,只有boost里面有这样现成的东西,而我又不想为了这么一个小东西引入个boost。所以,我借着这个机会研究了下,发现其实这些多线程/并发中的东西还是蛮有意思的。阅读本文你可能需要如下的一些知识:。而后,再交由下一步处理。如果到达了thread_count,改变could_release的值,这样循环条件不满足,代码可以继续执行。但是盲目的加锁会导致性能损失。只有当arrived_count值在两个线程不同步才会导致错误。但是如果这个时候t1并没有获得执行机会,t2一直执行,虽然唤醒了could_relase,但是t1会一直停留在18行。
暂无评论