多執行緒通訊

2021-06-06 06:06:32 字數 2587 閱讀 1070

from threading import *

from time import ctime

import socket

import pickle

class data:

def __init__(self,kind=none,to=none,from=none,message=none):

self.kind=kind

self.to=to

self.from=from

self.message=message

class serve:

def __init__(self,host='localhost',port=5432):

self.s=socket.socket(socket.af_inet,socket.sock_stream)

self.s.setsockopt(socket.sol_socket,socket.so_reuseaddr,1)

self.s.bind((host,port))

self.s.listen(1)

self.online=

self.data=

self.lock=lock()

while 1:

clientsock,clientaddr=self.s.accept()

client=thread(target=self.handleclient,args=[clientsock])

client.start()

def main():

serve=serve()

if __name__=='__main__':

main()

# coding: utf-8

from tkinter import *

from threading import *

import socket

import pickle

import time

#資料報類

class data:            

def __init__(self,kind=none,to=none,from=none,message=none):

self.kind=kind

self.to=to

self.from=from

self.message=message

#請求新對話(新執行緒)

def ask_dialog(self):                      

name=self.entry.get()

dialog=thread(target=self.handledialog,args=[name])

dialog.start()

self.entry.delete(0,len(name))

#建立新對話

def handledialog(self,name):               

top=toplevel()#介面和主介面基本一樣

top.title(name)

scrbar=scrollbar(frame[0])

scrbar.pack(side=right,fill=y)

messagebox=listbox(frame[0],height=25,fg='blue')

messagebox['yscrollcommand']=scrbar.set

messagebox.pack(expand=1,fill=both)

scrbar['command']=messagebox.yview

frame[0].pack(expend=1,fill=both)

entry=entry(frame[1],width=60,fg='blue')

entry.pack(fill=x,padx=10,pady=10)

#傳送訊息按鈕

send=button(self.frame[1],text='send',command=self.send)   

send.pack(side=left,padx=20,pady=10)

#推出按鈕

quit=button(self.frame[1],text='quit',command=self.quit)   

quit.pack(side=left,padx=20,pady=10)

frame[1].pack()

def send(self):

self.lock.acquire()

message=entry.get()

data=data(kind='message',to=name,from=self.clientname,message=message)

pickle.dump(data,self.fd)

entry.delete(0,len(message))

self.lock.release()

def quit(self):

top.quit()

def main():

client=client()

#mainloop()

if __name__=='__main__':

main()

執行緒通訊,多執行緒

多執行緒 thread handler thread處理一些複雜的業務邏輯 耗時的事情 handler在主線程中接收訊息的乙個物件 mhandler.sendmessage msg 傳送乙個訊息物件 mhandler.sendemptymessage what 傳送空訊息,只有what沒有obj m...

多執行緒 執行緒通訊

總結 今天小鹹兒來講解乙個好玩的事,那就是執行緒之間該如何通訊,執行緒通訊之後又會出現什麼問題?先來一張導圖來看看執行緒通訊的分布?疑問 如果想要執行緒按照使用者自定義的順序執行的話,那該如何操作呢?思考 如果能夠讓執行緒等待先執行的執行緒執行完,再執行不就能達到效果了嗎!果然出現問題之後,就會有對...

多執行緒 執行緒通訊

1.使用wait notify方法實現執行緒之間的通訊 1 有其他執行緒呼叫同乙個物件的notify或者notifyall方法 呼叫notify notifyall方法之前 2 被喚醒之後重新獲得物件的鎖 呼叫notify notifyall方法之後 編寫測試 如下 執行結果 2.管道通訊 管道流主...