当我的tcp服务器脚本中的另一个线程中的客户端套接字关闭时,我在选择时遇到EBADF错误。我在Python 3.6中工作
我在运行select的第一个线程中有2个线程,并且通过某种逻辑关闭了另一个线程的套接字。但是有时,我并非总是在选择行中得到EBADF。如果我在第一个线程中用相同的代码关闭客户端套接字,一切正常。
第一个线程
CONNECTION_LIST = []
read_sockets,write_sockets,error_sockets = select.select(CONNECTION_LIST,CONNECTION_LIST,[])
for sock in read_sockets:
...read socket code
for wsock in write_sockets:
...write socket code
第二个线程
CONNECTION_LIST.remove(sock)
write_sockets.remove(sock)
sock.close()
该如何解决?我认为需要使用队列,但不知道如何。谢谢。