簡體   English   中英

是否在boost :: thread_group中的所有線程都共享與boost :: recursive_mutex相同的線程

[英]Do all threads in boost::thread_group share the same thread with respect to boost::recursive_mutex

我懷疑基於代碼的行為,如果我具有boost :: thread_group訪問受boost :: recursive_mutex保護的對象,則互斥鎖不會阻止線程從組中同時進入保護區。

這很令人困惑,因為我看到了調試器(xcode)中列出的所有線程。

這是一個已知的問題? 我找不到任何文檔。

boost thread_group是一組線程。

根據定義,所有線程都是唯一的。


因此,如果您的互斥鎖無法執行...“ mut-ex”(相互排除),則表明其他地方發生了程序員錯誤。

一時興起,我建議也許您對互斥鎖的期望(遞歸與否)是不准確的(類似於線程組的期望)?

您可能會錯過的事情是, 所有訪問共享對象的各方必須在這些訪問的所有時間獲取互斥體。 僅讓一個線程“保護”共享對象,以神奇的方式將其他線程拒之門外是不夠的

互斥體是合作的命題。 術語“關鍵部分”實際上在這方面要好一些:您在代碼中“標記”關鍵部分,而不是“標記”關鍵數據(無論如何)。

暫無
暫無

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

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