簡體   English   中英

BOOST:遞歸shared_mutex?

[英]BOOST: recursive shared_mutex?

似乎Boost的shared_mutex不是遞歸的..反正這有什么問題嗎? (沒有重新實現整個東西)

看看這個帖子和這個很好的解釋為什么shared_mutex一般都是壞主意。 因此,如果您不同意recursive_mutex也是一個壞主意,只需使用它沒有任何清晰度,因為它不會給您帶來任何性能提升。 即使有任何重大變化,您也會收到更清晰的代碼。

我試圖在我的項目中使用shared_mutex來鎖定高度競爭的地圖,因為許多線程經常讀取數據而很少修改它。 收到的性能結果有點差

我部分不同意Andy認為shared_mutex是一個壞主意,因為它取決於你的設計,即你如何在你的程序中使用它。 我相信,如果你經常使用共享互斥鎖進行頻繁讀取,那么它可以為你提供更高效的性能,而不是使用簡單的互斥鎖來獲得更頻繁的鎖,以便用罕見的文字進行閱讀。 所以shared_mutex是一種長期同時做某事的方法。 在這種情況下,我不認為長鎖是一個糟糕的設計。

你支持我還是我錯了?

我以前親自走過這條路。 簡單的答案是否定的,沒有shared_recursive_mutex。

我真的不同意其他人會告訴你的關於遞歸互斥體通常是一個壞主意的事情,它當然可以節省一些時間並防止出現一些錯誤。 但是,如果您不想實現自己的shared_recursive_mutex,則必須堅持使用非遞歸互斥鎖。 也不是那么壞。

boost :: recursive mutex是獨占的。 我想你需要擴展shared_mutex。 您可以將當前線程ID保留在一個集合中,並檢查它是否存在於提供鎖定功能的集合中。

在這些情況下,您必須使用shared_ptr 將你的互斥鎖放在shared_ptr中它會對你的互斥鎖進行重新計數,這會給你相似的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM