簡體   English   中英

什么時候需要ConcurrentQueue?

[英]When is a ConcurrentQueue needed?

我問這個與此問題有關: 在多線程套接字服務器上使用事件

我實現了ConcurrentQueue認為需要它來避免多線程問題。 這樣做時,我注意到與標准Queue的唯一區別在於Dequeue()方法,要求使用out參數。

這使我認為唯一的保護是在使對象出隊的線程內,這是真的嗎?

在我的游戲中,我有一個主線程處理我的游戲邏輯,然后每個玩家有另一個線程正在執行偵聽,序列化和發送數據的工作。

因此,我的ConcurrentQueue將由不同的線程入隊和出隊,但只有一個並且始終相同,將調用入隊或出隊。

因此,我認為通過一個簡單的隊列就可以了嗎?

僅在從多個線程同時調用Dequeue()時才需要ConcurrentQueue嗎?

在我的游戲中,我有一個主線程處理我的游戲邏輯,然后每個玩家有另一個線程正在執行偵聽,序列化和發送數據的工作。

因此,您可能會遇到這樣的情況,即在您准確地將一個項目從隊列中取出時,您也將一個項目放入另一個線程中。 在這種情況下,排隊的項目可能會丟失,由於在不安全的代碼Dequeue (具體更新類成員,可以得到不同步)。 此外,調整后備數組的大小可能會導致項目丟失...

您需要一個ConcurrentQueue

暫無
暫無

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

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