00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_THREAD_HPP
00026 #define SFML_THREAD_HPP
00027
00029
00031 #include <SFML/Config.hpp>
00032 #include <SFML/System/NonCopyable.hpp>
00033 #include <cstdlib>
00034
00035
00036 namespace sf
00037 {
00038 namespace priv
00039 {
00040 class ThreadImpl;
00041 struct ThreadFunc;
00042 }
00043
00048 class SFML_API Thread : NonCopyable
00049 {
00050 public :
00051
00074 template <typename F>
00075 Thread(F function);
00076
00102 template <typename F, typename A>
00103 Thread(F function, A argument);
00104
00125 template <typename C>
00126 Thread(void(C::*function)(), C* object);
00127
00135 ~Thread();
00136
00146 void Launch();
00147
00159 void Wait();
00160
00172 void Terminate();
00173
00174 private :
00175
00176 friend class priv::ThreadImpl;
00177
00184 void Run();
00185
00187
00189 priv::ThreadImpl* myImpl;
00190 priv::ThreadFunc* myFunction;
00191 };
00192
00193 #include <SFML/System/Thread.inl>
00194
00195 }
00196
00197 #endif // SFML_THREAD_HPP
00198
00199