它是如何工作的?
我知道,你输入一个类型,然后你可以在另一个线程上接收它,同时也得到一个bool
。
但是我不明白,它是如何发送项目的?
例如,在线程 1 中,我有一个字节数组,我在其中写入一些数据,然后将其放入队列中。
然后线程 2,将用于TryDequeue(out byte[])
接收它。这是如何运作的?
作为 TryDequeue,将不得不将其写入另一个byte[]
,所以我猜,它正在做某种复制?
意思是,如果byte[]
线程 1 正在写入的是public
,线程 2 可以更快/更好地读取它,因为它不必被复制?
虽然问题是它不知道什么时候可以读取。
编辑:
这是我使用它时的一个例子:
while (True)
{
var tempBytes = new byte[length];
tempBytes.Write(....);
Queue.Enqueue(tempBytes);
read = true;
}
While(true)
{
if (Queue.TryDequeue(out TextureData))
{
................
}
});
那么,当线程 1 生成一个新的 tempBytes 时,对线程 2 的引用是否无效?还是一个新的字节数组成为一个新的引用,这意味着线程 2 无关紧要?
编辑2:
修复了示例代码以符合人们的意愿:)