[英]How to try_lock on a boost::unique_lock<boost::mutex>
[英]Mutual exclusions, How to implement try_lock() method using Lamport's Bakery Algorithm?
我在 C++ 中提出了以下解决方案,但尚未完全测试。
bool ImprovedBakeryLock::try_lock(int i)
{
Entering[i] = true;
Number[i] = 1 + max(Number[1], ..., Number[NUM_THREADS]);
Entering[i] = false;
bool acquired = true;
for (int j = 1; j <= NUM_THREADS && acquired; ++j) {
if (Number[j] != 0 && Number[j] < Number[i]){
acquired = false;
Number[i] = 0;
}
}
return acquired;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.