cost 104 ms
零爭用的 std::mutex 可怕的可擴展性

[英]Horrible scalability of std::mutex with zero contention

即使沒有競爭, std::mutex的可擴展性似乎也很糟糕。 這是保證每個線程都使用自己的互斥鎖的情況。 到底是怎么回事? Windows 中的結果非常糟糕: Linux 輸得更大: 我也嘗試過使用 tbb 的讀者/作者鎖,甚至還推出了我自己的鎖。 ...

為什么互斥量可以在不同的線程中使用?

[英]Why can mutex be used in different threads?

在多個線程中同時使用(寫入)相同的變量會導致未定義的行為和崩潰。 為什么使用互斥鎖,盡管事實上它們也是變量,但不會導致未定義的行為? 如果互斥鎖可以同時使用,為什么不讓所有變量同時工作而不加鎖呢? 我所有的研究都是在 Visual Studio 中按下Show definition on mute ...

析構函數,當對象的動態變量被互斥鎖鎖定時不會釋放它?

[英]Destructor, when object's dynamic variable is locked by mutex will not free it?

我試圖一次解決一些復雜的(至少對我而言)異步場景,但我認為理解更簡單的情況會更好。 考慮一個 object,它分配了 memory,由變量攜帶: 如果同時使用detach ed 中的var變量,即異步線程,在另一個線程中這個 object 會被刪除怎么辦? var是否有可能不會在析構函數中被刪除 ...

銷毀 std::mutex 與 pthread_mutex_t

[英]destroy std::mutex vs pthread_mutex_t

CPP 中的 std::mutex 和 pthread_mutex_t 有什么區別? 當按如下方式動態分配互斥鎖類型時,銷毀它們的正確方法是什么: pthread_mutex_t * mutex1 = new pthread_mutex_t(); std::mutex * mutex2 = ...

c++ 互斥鎖不會從內部阻止代碼,但允許從外部阻止它

[英]c++ mutexes that not blocks code from inside, but allow to block it from outside

我正在嘗試解決下一個問題: 有兩種類型的功能。 第一種類型可以同時從不同的線程執行(例如 - 從容器中讀取數據)。 第二個必須阻塞 first-type-function 中的所有線程,直到完成某些操作(例如 - 更改容器)。 我確信這是一項簡單的任務,但我找不到解決方案。 誰能幫幫我嗎? 這是一個 ...

為什么將 std::mutex 引入成員 class 會產生此編譯錯誤?

[英]Why does introducing std::mutex to member class generate this compile error?

在下面的代碼中, class B包含成員 class class A的數組。 B::A有一個成員bool和一個成員std::thread 。 下面的代碼編譯得很好: 為什么向B::A引入 std::mutex 會引入以下編譯錯誤? 如果我正確理解編譯錯誤,它抱怨B::A的實例無法在沒有B::A: ...

為什么 libc++ 允許遞歸鎖定 std::mutex?

[英]Why does libc++ allow recursive locking of std::mutex?

std::mutex是非遞歸的,違反它的是 UB。 所以理論上一切皆有可能(包括作為std::recursive_mutex工作)),但 libc++似乎工作正常,這個程序輸出再見 這是 libc++ 中的有意設計決定還是只是一些意外(例如,他們可以對互斥鎖和遞歸互斥鎖使用相同的邏輯)? li ...

當緩存行大小通常為 64 字節時,為什么 sizeof std::mutex == 40

[英]Why is sizeof std::mutex == 40 when cache line size is often 64 bytes

在 static_assert 之后,gcc 和 clang 主干都通過了。 由於 x86 CPU 有 64 字節緩存線,我期望互斥鎖 sizeof 為 64,因此可以避免錯誤共享。 大小“僅”40 字節是否有原因? 注意:我知道大小也會影響性能,但程序中很少有大量互斥體,因此與錯誤共享的成本 ...

std::atomic 和 std::mutex 的相對性能

[英]Relative performance of std::atomic and std::mutex

我正在考慮為項目實施隊列的選項,其要求是生產者至少必須盡可能低延遲。 為此,我一直在研究使用std::atomic來控制生產者和消費者線程對數據結構的訪問的“無鎖”隊列。 我希望這可以避免std::mutex的開銷,特別是代碼當前使用的std::unique_lock 。 為此,我編寫了一個簡單的測 ...

C++ 一組線程的互斥鎖

[英]C++ Mutex locking for a set of threads

我理解互斥鎖的基本原理是保護特定的代碼路徑不被超過 1 個線程訪問。 在我當前的設置中,我有 10 個 A 型線程(A1-A10)和 10 個 B 型線程(B1-B10)。 我的意思是,運行無限循環並分別調用方法 A() 和 B() 的線程。 從這些方法 A 和 B 中,它們都調用了 functio ...

使用 std::mutex 保護 for 循環

[英]Protecting for loop with std::mutex

我需要用 std::mutex 保護數據容器,它在 for 循環中使用,如下所示: 我可以想到幾種選擇,但它們像這樣丑陋: 有沒有好看的方法來實現這一目標? 我正在考慮類似以下(C++ 17)的內容,但這無法編譯。 :( 或者, ...

C ++使用互斥鎖在兩個線程之間同步而不使用條件變量

[英]C++ sync between two threads using a mutex without using conditional variable

我有一個線程需要阻塞,直到另一線程中發生問題為止。 聽起來很典型,我有這個解決方案。 這看起來在Linux上看起來很好,並且不需要條件var-除非C ++標准說在同一線程中兩次獲取鎖是未定義的行為-我在線程1中這樣做。 ...

std::atomic_ref 如何為非原子類型實現?

[英]How is std::atomic_ref implemented for non-atomic types?

我想知道如何為非原子對象有效地實現std::atomic_ref (每個對象一個std::mutex ),因為以下屬性似乎很難強制執行: 通過 atomic_ref 應用於 object 的原子操作相對於通過引用相同 object 的任何其他 atomic_ref 應用的原子操作而言是原子操作。 ...

是否需要鎖定?

[英]Is it necessary to lock?

我在leetcode中遇到了一個問題。 我已經在討論中查看了一些解決方案。 但是我的解決方案與其他解決方案不同,因為我沒有first在方法中使用lock 。 我想知道我的代碼是否正確。 此外,您能給我一些有關我的代碼的建議嗎? 我認為沒有必要像void second(functio ...

如果仍然需要互斥鎖才能正常工作,為什么要使用 std::atomic

[英]why use std::atomic if it still requires a mutex to work properly

閱讀std::condition_variable的文本我遇到了這句話: 即使共享變量是原子的,也必須在互斥鎖下進行修改,才能將修改正確發布到等待線程。 我的問題是這樣的: 如果不是“與 POD 一起工作的無鎖代碼”,原子有什么用? 更新 看起來我的問題有些混亂:( 引用文本中的“共 ...

為什么多余的額外作用域會影響std :: lock_guard行為?

[英]Why does a redundant extra scoping block affect std::lock_guard behaviour?

此代碼演示了兩個線程之間共享互斥鎖,但圍繞thread_mutex的范圍塊進行了一些奇怪的事情。 (我在另一個問題中有這個代碼的變體,但這似乎是第二個謎。) 這基本上可以正常工作,但理論上理論上不需要圍繞thread_lock的作用域。 但是,如果你評論出來...... ...


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