gpt4 book ai didi

c# - 具有两个索引的循环缓冲区

转载 作者:太空狗 更新时间:2023-10-30 01:02:44 25 4
gpt4 key购买 nike

我想制作一个有两个索引的循环缓冲区:

  • WriteIndex(由第一个线程控制)将新值写入缓冲区
  • ReadIndex(由第二个线程控制)从缓冲区读取值并进行分析

那么,当两个索引处于同一位置时,如何暂停线程。我的意思是,如果你没有写入任何新数据,你就无法读取它,所以如果 writeindex 和 readindex 在同一位置,你只能写入新数据,而不是读取它。

如何阻塞线程直到有事情发生?

最佳答案

您要查找的内容已在 BCL 中: BlockingCollection<T> .

它是线程安全的:它有一个 Add() method添加项目和阻止 Take() method阻塞(“暂停调用线程”)直到一个项目可用。

正如现已删除的评论中所述:这确实不是真正的循环缓冲区,一旦达到最大值,它就会处理或覆盖项目。不过,您可以为集合大小设置上限;这将使Add()阻塞直到有更多空间。

关于c# - 具有两个索引的循环缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32609965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com