0
我写了一些关于boost共享互斥锁的测试代码。我刚刚发现有时boost :: shard_lock可能无法创建。Boost共享锁失败创建
我在这里误解了吗?或者如何获取日志/异常?
const int thnum = 1000;
const int times = 10000;
long total = 0;
boost::shared_mutex shared_mutex_lock;
void shared_mutex_click()
{
for (int i = 0; i < times; ++i)
{
boost::shared_lock<boost::shared_mutex> readerLock(shared_mutex_lock);
++total;
}
}
int main()
{
boost::thread_group threads;
clock_t start, end;
total = 0;
start = clock();
for (int i = 0; i < thnum; ++i)
{
threads.create_thread(shared_mutex_click);
}
threads.join_all();
end = clock();
std::cout << "Shared Mutext Result: " << total << std::endl;
std::cout << "Shared Mutext Time: " << end - start << std::endl;
return 0;
}
当测试resule是: 共享Mutext结果:7102861 共享Mutext时间:2451
它应该是: 共享Mutext结果:千万
权?为什么以及如何弄清楚发生了什么,谢谢。
哦,我明白了。你是对的。我应该使用boost :: unique_lock readerLock(shared_mutex_lock);写。它按预期工作。并感谢您的意见BTW。 –
QiangLiu
@QiangLiu如果答案解决了您的问题,请考虑[将其标记为答案](https://stackoverflow.com/help/someone-answers)。 – hnefatl