Есть код на С++.
Используется fork() и phthrad.
class thread {
public :
virtual ~thread(){}
virtual void *init() = 0;
int start(){
int n = pthread_create(&pth_, 0, &real_run, this);
pthread_detach(pth_);
return n;
}
int stop(){pthread_exit(this);}
pthread_t id() const{
return pth_;
}
private :
pthread_t pth_;
static void * real_run(void *arg){
thread *t = static_cast<thread *>(arg);
return t->init();
}
};
class vol : public thread{
public:
vol();
private:
void test(){printf(">>> echo from thread\n");};
void *init(){test();};
};
vol::vol()
{}
int main()
{
int pid = 0;
printf("> create vol\n");
vol *v = new vol();
printf("> start fork\n");
if ((pid = fork()) < 0)
{
printf("> can't fork\n");
} else if (pid != 0) {
printf("> fork success\n");
exit(0);
}
printf("> start thread\n");
v->start();
printf("> ready\n");
}
на выходе
./prog
> create vol
> start fork
> fork success
> start thread
> ready
... не выводится >>> echo from thread
Проблема в том, что не происходит запуска потока. Есть ли способ запускать поток и использовать fork().
Заранее спасибо!