什么时候需要 ConcurrentQueue?
When is a ConcurrentQueue needed?
我问的是与这个问题相关的问题:
我已经实现了一个 ConcurrentQueue
认为需要它来避免多线程问题。这样做时,我注意到与标准 Queue
的唯一区别在于 Dequeue()
方法,要求使用 out
参数。
这让我认为唯一的保护是在使对象出队的线程内,这是真的吗?
在我的游戏中,我有一个主线程处理我的游戏逻辑,然后每个玩家的另一个线程正在执行监听、序列化和发送数据的工作。
所以我的 ConcurrentQueue
将被不同的线程入队和出队,但只有一个并且总是相同的将调用入队或出队。
所以我认为简单的队列就可以了?
只有在多个线程同时调用Dequeue()
时才需要ConcurrentQueue
吗?
Im my game i have a main thread processing my game logic then another thread per player that is doing the jobs of listening, serializing and sending data.
因此,您可以结束这样的情况,即在您使一个项目出队的同时,您也在另一个线程中使一个项目入队。在这种情况下,排队的项目可能会由于 the unsafe code in Dequeue
而丢失(特别是更新可能不同步的 class 成员)。此外,调整支持数组的大小可能会导致项目丢失...
您需要 ConcurrentQueue
.
我问的是与这个问题相关的问题:
我已经实现了一个 ConcurrentQueue
认为需要它来避免多线程问题。这样做时,我注意到与标准 Queue
的唯一区别在于 Dequeue()
方法,要求使用 out
参数。
这让我认为唯一的保护是在使对象出队的线程内,这是真的吗?
在我的游戏中,我有一个主线程处理我的游戏逻辑,然后每个玩家的另一个线程正在执行监听、序列化和发送数据的工作。
所以我的 ConcurrentQueue
将被不同的线程入队和出队,但只有一个并且总是相同的将调用入队或出队。
所以我认为简单的队列就可以了?
只有在多个线程同时调用Dequeue()
时才需要ConcurrentQueue
吗?
Im my game i have a main thread processing my game logic then another thread per player that is doing the jobs of listening, serializing and sending data.
因此,您可以结束这样的情况,即在您使一个项目出队的同时,您也在另一个线程中使一个项目入队。在这种情况下,排队的项目可能会由于 the unsafe code in Dequeue
而丢失(特别是更新可能不同步的 class 成员)。此外,调整支持数组的大小可能会导致项目丢失...
您需要 ConcurrentQueue
.