Code Bye

求教线程信号量的控制问题,感谢

 

有一个线程用来处理某种逻辑,现在需要实现信号量分支控制:
1.外部有两种信号,一种执行,一种关闭,线程接收到执行信号时,就执行逻辑处理,接收到关闭信号时就结束线程的执行
2.执行信号用了Semaphore来做,因为有一个数量的控制,最大只能允许同时存在N个执行请求,超出这个数量的请求会被拒绝

求大家给点思路,线程中目前是
while (_semaphore.WaitOne()){ … }
来控制,但我想增加一个退出的信号量,不知道如何处理

40分

#1

这个类可以添加添加一个 bool变量,例如 isStop;
public void Stop()
{
     this.isStop=true;
     _semaphore.Release();
}

循环的代码


while (_semaphore.WaitOne()){ 
    if(this.isStop)
{
break;
}
//执行任务
 }

#2

回复1楼:

如果外部不发起执行信号,就会一直卡在while的判断那里,无法关闭的

研究了一上午,已经解决了,使用WaitAny可以实现我的要求


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求教线程信号量的控制问题,感谢