收到消息时键入消息中断

时间:2013-09-05 11:11:51

标签: python multithreading python-3.x client-server chat

我正在做一个小客户端\服务器线程聊天,我有一个问题, 如果其中一方正在键入一条消息时收到消息,则会打断正在输入的消息是用于说明的图像

enter image description here

这是线程代码:

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>>> ")

我明白为什么会这样,但我不知道如何解决它,我会很高兴 寻求帮助和建议:)

1 个答案:

答案 0 :(得分:0)

您必须将此问题作为并发问题处理。在您的情况下,控制台是一个共享资源,正在发生的事情是接收方的线程正在使用它,而发送方仍然“使用它”。

您可以添加一个保护打印语句的锁,您可以在此处找到有关它的详细信息: http://docs.python.org/2/library/threading.html#lock-objects