Je crée un serveur qui démarre un thread (fil d'écoute). Ce thread écoute les connexions et fait ça. Finalement, il peut recevoir des données, que je veux passer au créateur du serveur:Contexte de thread sur Delphi
Mon programme -> Crée mon serveur -> Crée l'auditeur -> crée un thread pour chaque client
Maintenant, la question est: si j'attribue une propriété OnData = procedure (const Received: string) de l'objet; au serveur quand je le crée, et ensuite, cette même procédure est passée aux threads du client, donc quand le thread aura des données, il sera capable de les renvoyer au créateur du serveur. En pseudocode:
//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)..
Les questions ici sont:
1- Je comprends que si 10 threads exécutent cette procédure en même temps, la procédure sera exécuter dans le contexte de thread client, est donc la responsabilité de mon programme (le "propriétaire" réel de la procédure) pour synchroniser. Est-ce correct?
2- Si 10 threads différents exécutent la procédure, ai-je 10 "instances" de la procédure avec ses propres données en cours d'exécution en même temps?
3- Ai-je besoin de protéger l'objet OnData sur le serveur (par exemple, avec une section critique), ou de laisser la procédure "réelle"?