gpt4 book ai didi

.net - 如何将信号连接到.NET中的复杂电路?

转载 作者:行者123 更新时间:2023-12-02 04:17:05 25 4
gpt4 key购买 nike

对于一些并发代码,我想像电路一样将一堆信号连接在一起。在.NET中,我们可以对信号集合执行WaitAll或WaitAny。我想做这样的事情:

WaitAny ( WaitAll (c1, c2), WaitAll (c3, c4) ) ;

不幸的是,该库不支持将这些操作组成更复杂的树。我的问题是(1)在.NET中有没有办法做到这一点? (2)是否有任何语言的精巧库?

[编辑:科里询问更多细节]

我想建立一个消息传递库。可能有1万个小型并发队列,其中一些带有消息。我想从队列中获取一条消息并执行分配给该队列的处理程序。但是,在处理程序完成之前,我无法获取下一条消息(每个队列单线程)。因此,我真的想同时等待队列(是否收到消息?)和代码(是否包含上一条消息?),然后弹出并执行下一项。

最佳答案

我什至不敢相信我的建议,但是您可以让其他线程执行WaitAll调用并触发您在WaitAny中侦听的单独信号(每组WaitAll唯一)。闻起来很糟糕,对于应该简单的东西来说似乎过于复杂。我可能会后悔点击Post Your Answer ;-)

ManualResetEvent _Group1Event = new ManualReset(false);
ManualResetEvent _Group2Event = new ManualReset(false);

void SomeThread()
{
...
WaitHandle.WaitAny(_Group1Event, _Group2Event);
...
}

void Group1WatcherThread()
{
...
if (WaitHandle.WaitAll(c1, c2))
{
_Group1Event.Set();
}
...
}

void Group2WatcherThread()
{
...
if (WaitHandle.WaitAll(c3, c4))
{
_Group2Event.Set();
}
...
}

不确定在我的WaitAll / WaitAny方法调用中,但是该示例仅用于说明该想法未提供完整的解决方案。

关于.net - 如何将信号连接到.NET中的复杂电路?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com