多线程同步的问题

比如我现在有10000条任务需要执行,通过信号量SemaphoreSlim来实现控制20条线程并发。

 

  在线程内部是发送GET请求,由于目标服务器上面有限制,可能会返回403,其中任意一条线程发现返回的状态是403的时候进行拨号换IP,现在问题就是怎么通知其他线程,我已经换IP了,你们不用再换了,注意,通知的线程只是在这20次中的线程,后来的线程不做通知,因为服务器可能又限制了。

 

这个是我现在的做法,定义一个程序集变量,在线程内部获取这个变量_flag

https://img.mukewang.com/5b7fb34100015b6305300192.jpg

然后在异常块判断,这两个值是否相等,不相等说明已经更换IP了,那么重新执行这个方法,如果相等则进入lock块再判断是否更换IP,有点像单例。

https://img1.mukewang.com/5b7fb3470001409304860385.jpg


想请问一下是否还有更好的做法?


侃侃尔雅
浏览 500回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP