我正在试图找到正确的方法来处理下面的情况,在python中使用同步。假设有一个共享资源connection
,8个线程使用该资源通过连接发出命令。偶尔,connection
会抛出异常,为此我添加了一个异常处理例程,可以重新建立连接。
问题是,当连接失效时,所有8个线程都会得到异常。为了解决这个问题,我可以添加一个信号量,这样一次只会有一个线程尝试重新建立连接,但是即使这样也有一个问题。
如果线程1是第一个获得信号量的线程,那么当它们遇到异常时,线程2-8很快就会在该信号量上被阻塞。线程1将得到一个新的连接,线程2-8可以成功地使用,并释放信号量。
此时,我希望再次处理线程2-8,但是,由于它们以前在信号量上被阻塞,线程2现在在信号量上被解除阻塞,并再次尝试重新建立线程1现在已经尝试使用的连接。这可能导致一个级联问题,当其他线程试图重新建立连接时,线程一直试图使用连接。是否有一个标准的范例来处理这样的共享资源?
发布于 2014-04-10 18:20:01
在任何线程获得信号量之后,我会检查是否建立了连接。如果没有,那就重新建立,否则就照常进行。
https://stackoverflow.com/questions/22969787
复制相似问题