很抱歉提出这个问题,我已经谷歌了一下,但似乎出现的都是克隆或复制方法的参考,而不是 C#
中实际回答我的问题的答案。
我有两个字节数组,并且它们被两个线程访问。
private byte[] buffer1 = new byte[size];
private byte[] buffer2 = new byte[size];
我的目标是在Thread1
中向buffer1
中写入内容,获取互斥对象,交换指针并重复此过程。 Thread2
将获取互斥对象并始终读取buffer2
。
目标是使Thread2
运行速度快,并且不受Thread1
中进行的复制的影响。
我非常不清楚当我执行以下操作时会发生什么:
byte[] temp = buffer1;
buffer1 = buffer2;
buffer2 = temp;
指针是否被切换或者buffer2
的内容被复制到buffer1
?这应该是一个简单的问题,但我似乎找不到答案。 Thread1
正在执行Marshal.Copy()
,我不希望这个调用影响到Thread2
。
Buffer.BlockCopy()
。 - John Alexiou