|
|
1
2
您使用的EventWaitHandle类不正确。重置事件不应用于向多个线程发出信号。相反,您需要为每个线程创建一个重置事件,然后当您准备好了,在它们之间循环并使用set()。主线程不应调用reset()方法。可以说,每根线都应该负责关闭它们后面的门。 下面是一个基本示例:
|
|
2
3
我也有同样的问题,令人惊讶的是,在网络上找不到任何好的解决方案来解决这种松散耦合/失火和忘记/多个侦听器类型的事件,所以这里是我想到的。
请注意解决方案的超时时间介于
所以要求是:
诀窍是使用自动设置事件,因为它们不存在争用条件问题,而是为每个侦听器定义一个。我们事先不知道侦听器的数量,但我们可以固定最大数量的侦听器(上面描述的“n”):
以下是向所有潜在侦听器引发事件的发布者代码:
下面是接收事件通知的侦听器代码:
|
|
|
3
0
此处使用的同步类型不正确。您应该使用信号量类来代替事件,使用您希望允许的同时访问的数量。 您可能还需要两个信号量,第二个信号量用于触发事件以进行检查的代码(响应事件的代码将保持锁定),以防您不希望快速连续发生两个事件,并让一段代码进入另一个事件的尾部。 |
|
|
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 1 年前 |