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