Jean-Baptiste CAMPESATO wrote in news:pan.2005.04.02.22.37.39.88996@nospam.a2lf.org: > Hello, > I want to create a function wich can called "several times at the same > time", MultiThread. > I found task and i tested : > In ADS : > -- Tache pour le traitement du client > task Traitement is > entry Go(Client:Socket_Type); > end Traitement; > ----------------------------------------------- > In ADB : > task body Traitement is > begin > accept Go(Client:Socket_Type) do > put_line("Tache."); > Close_Socket(Client); > end Go; > end Traitement; > ------------------------------------------------ > In the loop wich call Traitement: > loop > -- On accepte le client > Accept_Socket (Server, Client, Address); > -- Et on cr�� un thread pour lui > Traitement.Go(Client); > end loop; > > > And the first time i call the task it's Ok, but at the second time i've a > "TASKING_ERROR". Task Traitement terminates at the end of its first execution. Tasks are not callable after they terminate. You need to create a loop in the Traitement to allow it to accept the Go entry as many times as necessary. task body Traitement is begin loop select accept Go(Client : Socket_Type) do Put_Line("Tache."); Close_Socket(Client); or terminate; end select; end loop; end Traitement; The selective accept with a terminate alternative should provide you with the functionality you want. The task will continue to loop through the selection of the entry Go until the the task that calls the Go entry terminates. Task Traitement will then automatically terminate cleanly. Jim Rogers