Kod: Zaznacz cały
template < class T = int > class thread {
private:
void* (*func)( void* ); ///< Wskaźnik na funkcję, która ma być wątkiem.
pthread_t th; ///<
T* args; ///< Argumenty przekazywane do funkcji
thread_attr* param;
bool state; ///< status wątku
public:
/**
* @brief Konstruktor klasy @b Thread
*
* @param _func Wskaźnik do fungkcji, która ma zostać wywołana jako osobny wątek.
* @param _args Wskaźnik do argumentów, które mają zostać przekazane nowemu wątkowi
* @return
*/
thread( void*(*_func)( void* ), T* _args = NULL ) :
func( _func ), args( _args ), state( false ) {
};
int start( const thread_attr* _param = NULL ) throw(threadError) {
if ( state ) {
throw threadError( "This thread has already started." );
}
int ret = NULL;
param = (thread_attr*) _param;
ret = pthread_create( &th, param, func, (void*) args );
return ret;
}
void stop();
void join() {
pthread_join( th, NULL );
}
};
Edit:
Teraz mam problem bo muszę zrobić coś takiego:
Kod: Zaznacz cały
void * test( void * params ) {
char** s = (char**)params;
/* reszta kodu */
}