00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __runner_h
00025 #define __runner_h
00026
00027 #include <eoFunctor.h>
00028
00029 #include "communicable.h"
00030 #include "thread.h"
00031
00032 typedef unsigned RUNNER_ID;
00033
00034 class Runner : public Communicable, public Thread {
00035
00036 public :
00037
00038 Runner ();
00039
00040 void start ();
00041
00042 void waitStarting ();
00043
00044 bool isLocal ();
00045
00046 void terminate ();
00047
00048 virtual void run () = 0;
00049
00050 RUNNER_ID getID ();
00051
00052 void packTermination ();
00053
00054 void notifySendingTermination ();
00055
00056 private :
00057
00058 sem_t sem_start;
00059
00060 unsigned id;
00061 };
00062
00063 extern bool atLeastOneActiveRunner ();
00064
00065 extern void unpackTerminationOfRunner ();
00066
00067 extern Runner * getRunner (RUNNER_ID __key);
00068
00069 extern void startRunners ();
00070
00071 extern void joinRunners ();
00072
00073 #endif