[英]Python socket with multithread synchronization issue
我正在编写一个代码,其中任意数量的客户端将向服务器发送请求。 服务器会将他们的信息收集到一个字典中,并将回复发送给这些客户端。
到目前为止,我所做的是:
客户端将接收的值的数量应该相同,因为必须在所有线程之间共享字典。
我面临的错误是字典无法以共享方式访问。 我知道我所面对的是所谓的“条件竞赛”。 我尝试使用锁,RLocks甚至条件变量,但是它不起作用。
请帮助如何进行。
对于线程,我继承了Thread类并重写run()以执行以下操作:
[伪]
def run(self):
data = sock.recv(1024)
dc["vals"].append(data)
# dc is shared dictionary and values are list
dr = self.processStrings(dc) #need to access all values after updates from all threads
sock.sendall(dr) #this has to be sent to different individual clients back
看一下这个:
import time
import threading
data = {
'key': []
}
class Thread(threading.Thread):
def __init__(self, index):
super(Thread, self).__init__()
self.index = index
def run(self):
time.sleep(0.01)
data['key'].append(self.index)
if __name__ == '__main__':
for i in range(10):
t = Thread(i)
t.start()
t.join()
启动线程时是否调用thread.join?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.