【问题标题】:how to be notified that items of the array are updated?如何通知数组的项目已更新?
【发布时间】:2012-11-21 12:10:01
【问题描述】:

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

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

但现在我确实认为这不是有效的。我认为我可能应该使用 one 事件。因为我可以计算更新了多少项目,所以我可以在上次更新时引发事件。

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

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

【问题讨论】:

    标签: c#


    【解决方案1】:

    看看BlockingCollection,您可以以线程安全的方式添加您的项目吗?

    您也可以考虑使用thread safe ObserveableCollection 来获取您的通知。

    【讨论】:

    • 如何帮助它取代“WaitAll”?
    • 我也更喜欢“最简单”的解决方案。因为我确实关心延迟,因为我将来会将其移植到 C++ 中。
    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 2023-04-09
    • 1970-01-01
    • 2011-09-30
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多