1
2
您使用的EventWaitHandle类不正确。重置事件不应用于向多个线程发出信号。相反,您需要为每个线程创建一个重置事件,然后当您准备好了,在它们之间循环并使用set()。主线程不应调用reset()方法。可以说,每根线都应该负责关闭它们后面的门。 下面是一个基本示例:
|
2
3
我也有同样的问题,令人惊讶的是,在网络上找不到任何好的解决方案来解决这种松散耦合/失火和忘记/多个侦听器类型的事件,所以这里是我想到的。
请注意解决方案的超时时间介于
所以要求是:
诀窍是使用自动设置事件,因为它们不存在争用条件问题,而是为每个侦听器定义一个。我们事先不知道侦听器的数量,但我们可以固定最大数量的侦听器(上面描述的“n”):
以下是向所有潜在侦听器引发事件的发布者代码:
下面是接收事件通知的侦听器代码:
|
3
0
此处使用的同步类型不正确。您应该使用信号量类来代替事件,使用您希望允许的同时访问的数量。 您可能还需要两个信号量,第二个信号量用于触发事件以进行检查的代码(响应事件的代码将保持锁定),以防您不希望快速连续发生两个事件,并让一段代码进入另一个事件的尾部。 |
Community wiki · 需要改变的用户界面模式? 1 年前 |
LITzman · 使用状态处理颜色主题更改 1 年前 |
Community wiki · 进程。退出(0):输出消失? 1 年前 |
arsaces · 将文本添加到特定文件的末尾 2 年前 |
YGranja · 库<图形。h> MinGW-W64缺少 2 年前 |
Felipe Palermo · Ctrl键仍被按下,按键事件() 2 年前 |
HCJ · win cmd中的批处理脚本循环 2 年前 |