//------------------------------------------------------------------------------ /** @file "Pthreads/C++/Primer 1 - thread/ThreadCpp.h" @brief Deklaracija apstraktne klase niti. */ //------------------------------------------------------------------------------ #ifndef _ThreadCpp_h_ #define _ThreadCpp_h_ //------------------------------------------------------------------------------ #include #include //------------------------------------------------------------------------------ using namespace std; //------------------------------------------------------------------------------ /** @brief Apstraktna klasa niti. Definicija apstraktne klase niti. */ class ThreadCpp { public: /** @brief Metoda koja startuje izvravanje niti. */ void start(); /** @brief Metoda za pridruzivanje niti. */ void waitToComplete() { pthread_join(tid, 0); } /** @brief Staticka metoda za unistavanje niti. @param t Nit koju zelimo da unistimo. */ static void dispose(ThreadCpp* t) { t->waitToComplete(); delete t; } protected: /** @brief Apstrakna metoda run. Implicitno se poziva kada se nit startuje. */ virtual void run() = 0; /** @brief Destruktor klase. */ virtual ~ThreadCpp() {} /** @brief Staticka metoda za pokretanje pocetne niti. @param thread Nit koju zelimo da pokrenemo. @return void* Rezultat poziva rutine pthread_exit(). */ static void* starter(void* thread); /** @property tid @brief Deskriptor niti. */ pthread_t tid; }; //------------------------------------------------------------------------------ #endif //------------------------------------------------------------------------------