c# 多线程 并发 Semaphore\AutoResetEvent都无法解决的需求~有人会吗?
我希望多线程的时候~执行函数a是可以并发执行的~但是执行函数b的话就要同步~如果a在执行,b是要等待的~如果b执行a也是要等待的。简单来说就是~1.进入了b后就是同步执行...
我希望多线程的时候~
执行函数a是可以并发执行的~但是执行函数b的话就要同步~如果a在执行,b是要等待的~如果b执行a也是要等待的。
简单来说就是~
1.进入了b后就是同步执行~(a这时候是不能执行的)
2.只进入a是可以同步多线程同时执行a的~
3.只进入a但是b是不能执行的·要等待。 展开
执行函数a是可以并发执行的~但是执行函数b的话就要同步~如果a在执行,b是要等待的~如果b执行a也是要等待的。
简单来说就是~
1.进入了b后就是同步执行~(a这时候是不能执行的)
2.只进入a是可以同步多线程同时执行a的~
3.只进入a但是b是不能执行的·要等待。 展开
3个回答
展开全部
Semaphore可以实现:
思路如下:
第一步、Semaphore控制起始信号量为0,最大信号量2;
第二步、释放一个信号量;
第三步、在a方法里面释放一次信号量(释放之后,如果此时b被触发,由于信号量由0变为1,所以b方法也可以执行),然后a方法调用waitone占用一个信号量,a方法执行完毕后在释放一次信号量;
第四步、在b方法调用waitone占用一个信号量(由于系统信号量只有一个,被占用后系统信号量为0,此时a方法不能执行),b方法执行完毕后释放一次信号量(b释放一次信号量之后,系统信号量由0变为1,所以方法a就可以执行了);
思路如下:
第一步、Semaphore控制起始信号量为0,最大信号量2;
第二步、释放一个信号量;
第三步、在a方法里面释放一次信号量(释放之后,如果此时b被触发,由于信号量由0变为1,所以b方法也可以执行),然后a方法调用waitone占用一个信号量,a方法执行完毕后在释放一次信号量;
第四步、在b方法调用waitone占用一个信号量(由于系统信号量只有一个,被占用后系统信号量为0,此时a方法不能执行),b方法执行完毕后释放一次信号量(b释放一次信号量之后,系统信号量由0变为1,所以方法a就可以执行了);
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
展开全部
问题倒不是太复杂,关键是你的a/b所处的线程环境倒底是怎样的,是多个线程同时启动去执行a,与此同时多个线程启动去执行b还是其它情况。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a中会不会执行b,b中会不会执行a?
单个线程的执行流程是什么样的
单个线程的执行流程是什么样的
追问
不会·忘了说·A B完全分开的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询