如何通知数组的项目是否更新?

时间:2012-11-21 12:10:01

标签: c#

假设我有一些数组。所有项目最初都是null Thread1写入数组。 Thread2阻塞,直到数组中的所有项都被设置(然后处理)。

我这样做:我用AutoResetEvent创建了另一个数组。在Thread1中,每当我更新数组项时,我都会将Set调用到相应的AutoResetEvent,而在Thread2中我只是WaitHandle.WaitAll(events);

但现在我觉得这样做效率不高。我认为我应该使用一个事件。因为我可以计算有多少项目已更新,我可以在上次更新时提出事件。

这是简化的例子,在现实生活中事情有点困难,但可能你可以提出更好的建议吗?

我还应该在Thread1中使用Volatile.Read吗? (我有双CPU机器)。

1 个答案:

答案 0 :(得分:0)

什么不看BlockingCollection所以你可以用线程安全的方式添加你的项目?

您可以使用thread safe ObserveableCollection来查看通知。