Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Потоки для каждого элемента класса


Автор: hente 7.11.2009, 09:53
Собсно проблема следующая: создаю класс конструктор коготорого должен создавать новый поток 
через: pth_crete(....).

Код

class PTH{
      public:
           PTH(void*(*)(void*))
};

PTH::PTH(void*(*func)(void*)){
     pth_create(id,NULL,func,NUL);

}


вот этот кусок кода как тока невидоизменял никак не принимает компилятор
А необходимо все навсего при создании эллемента класса создавать новый поток а в конструктор передать указатель на ф-ю (статическую или глобальную без разницы) как сделаьб посоветуйте.... smile 


За ранее спасибо!

Автор: vinick 9.11.2009, 03:17
Код

#include <pthread.h>
class PTH{
  pthread_t id;
public:
  PTH(void*(*)(void*));
};

PTH::PTH(void*(*func)(void*)){
  int rv = pthread_create(&id,NULL,func,NULL);
  // тут вставить обработку возвращаемого значения
}

Автор: chaos 9.11.2009, 09:37
vinick, тогда уж лучше за "тайпдефить"
Код

typedef void* (*thread_func)(void*);

class PTH
{
public:
    PTH(thread_func tf)
};

PTH::PTH(thread_func tf)
{
    pth_create(id,NULL,tf,NUL);
}



ИМХО приятней

Автор: hente 11.11.2009, 09:16
vinick,  вот именно так и делаю....а выдает 

/tmp/ccnrCIDX.o(.text+0x4b1): In function `Pthread::Pthread[not-in-charge](void* (*)(void*))':
: undefined reference to `pthread_create'
/tmp/ccnrCIDX.o(.text+0x4cf): In function `Pthread::Pthread[in-charge](void* (*)(void*))':
: undefined reference to `pthread_create'
collect2: ld returned 1 exit status


чо не так делаю....


А экземляр создаю банально 


Код

void* main_func(void*){

}
............
Pthread A(main_func)


вотьь.....есть варианты?

Автор: vinick 11.11.2009, 13:48
А при сборке -pthread указываешь?

Код

 $ g++ -o test test.cpp -pthread


Автор: hente 11.11.2009, 17:40
 smile гы ашно самому смешно стало  smile  спасибо большое!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)