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