簡體   English   中英

C ++多線程指針指向的指針

[英]C++ multithreaded pointer to pointer to pointer

假設我有一個指向該指針的指針,即int *** ptr,它保存一個三維數組。 根據CPU,我希望大約有三個線程同時讀寫我的指針。 為了簡單起見,將不重新定義ptr(如果我不得不重新定義指針,我仍然想知道如何處理多線程)。 我想並發寫入指針而不必使用互斥體,因為它會阻塞其他線程。 我該怎么做? 我仍然不太了解原子模板分類...

謝謝! :)

這取決於線程的運行方式。

所有線程都可以從給定位置讀取而不會發生沖突,但是這是問題所在(同時更改值(同時更改值,在更改時讀取值或使用已更改的讀取值))。

如果您已確保在線程之間不更改任何值(例如,線程1寫入ptr [0] [0] [x],線程2 ptr [0] [1] [x],線程3 ptr [0) ] [2] [x]),實際上您根本不需要執行任何互斥。

如果沒有保證,則必須互斥每次讀取和寫入值。

重新定義實際上是在更改指針值。 因此,如果只有1個線程必須處理要更改的指針值,則不必擔心。 否則,每次讀取和寫入時都使用互斥鎖。 因此,如果只有1個線程訪問ptr [0] [0],並且您需要調整ptr [0] [0]的大小,那么您就很高興了。

如果沒有保證,則必須互斥每次讀取和寫入值。

暫無
暫無

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

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