多线程使用这个socket对象去读写操作,所以我加了一个全局锁,然后在:tcp_c.setblocking(False) 这句话出异常,报错:[Errno 35] Resource temporarily unavailable
global count_lock
socket_lock.acquire()
count_lock += 1
....
try:
data = None
# 设置 recv 超时时间
tcp_c.setblocking(False)
ready = select.select([tcp_c], [], [], self._timeout)
if ready[0]:
# 接收结果
data = tcp_c.recv(self._read_size).strip('\x00')
else:
if errno.EINTR:
self.close()
return None
except:
self.state_listener.run_message("client disconnect. {}".format(traceback.format_exc()))
self.close()
# 断开网络时
return None
...
socket_lock.release()
参考 :https://blog.csdn.net/whatday/article/details/104908614
将: tcp_c.setblocking(False)注释掉,目前运行正常