假设我有一些数组。所有项目最初都是null
Thread1 写入数组的。Thread2 阻塞,直到数组中的所有项目都被设置(然后处理)。
我是这样做的:我用AutoResetEvent
. 在 Thread1 中,每次我更新数组项时,我都会调用Set
相应的 AutoResetEvent,而在 Thread2 中,我只是WaitHandle.WaitAll(events);
但现在我确实认为这不是有效的。我认为我可能应该使用一个事件。因为我可以计算更新了多少项目,所以我可以在上次更新时引发事件。
这是一个简化的例子,在现实生活中事情有点难,但也许你可以提出更好的建议?
我也应该Volatile.Read
在 Thread1 中使用吗?(我有双CPU机器)。