我正在做一个小客户端\服务器线程聊天,我有一个问题, 如果其中一方正在键入一条消息时收到消息,则会打断正在输入的消息是用于说明的图像
这是线程代码:
import threading
import socket
class sendTread(threading.Thread):
def __init__(self,soc):
threading.Thread.__init__(self,name='sender')
self.s=soc
def run(self):
while True:
self.s.send(bytes(str(input('>>> ')), 'UTF-8'))
print('sent.')
class recvTread(threading.Thread):
def __init__(self,soc):
threading.Thread.__init__(self,name='recver')
self.s=soc
def run(self):
while True:
data=self.s.recv(1024)
print('\nrecv:',str(data)[2:len(str(data))-1],end="\n>>> ")
我明白为什么会这样,但我不知道如何解决它,我会很高兴 寻求帮助和建议:)
答案 0 :(得分:0)
您必须将此问题作为并发问题处理。在您的情况下,控制台是一个共享资源,正在发生的事情是接收方的线程正在使用它,而发送方仍然“使用它”。
您可以添加一个保护打印语句的锁,您可以在此处找到有关它的详细信息: http://docs.python.org/2/library/threading.html#lock-objects