我正在創建一個啓動線程的服務器(偵聽線程)。這個線程監聽連接並做它的事情。它最終可能會收到一些數據,我想傳遞給服務器的創建者:Delphi上的線程上下文
我的程序 - >創建我的服務器 - >創建監聽器 - >創建一個線程爲每個客戶
現在的問題是:如果我分配一個屬性OnData = procedure(const Received:string)的對象;到服務器,然後,這個相同的過程被傳遞給客戶端線程,所以當線程獲得一些數據時,它將能夠將它傳遞迴服務器的創建者。在僞代碼:
//My program
MyServer:= TServer.Create();
MyServer.Ondata:= SomeProcedure;
//The client thread
//When data is received
if (FServer <> nil) then
if Assigned(FServer.Ondata) then
Fserver.Ondata(ReceivedString)..
的問題,這裏有:
1 - 我明白,如果10個線程同時執行該過程,該過程將在客戶端線程上下文中執行,因此是責任我的程序(程序的實際「所有者」)進行同步。是對的嗎?
2-如果10個不同的線程執行這個過程,我有10個過程的「實例」,它自己的數據同時運行嗎?
3-我是否還需要保護服務器對象上的OnData(例如,使用關鍵部分),還是可以將其保留到「實際」過程?