这是由我决定我的例程必须有一个返回值,它需要返回。
即:
int mySuperThread(void)
我启动线程并完成它需要做的事情。问题是如何连续重新启动线程一次又一次地完成其工作,同时仍然能够返回一个整数(通过线程的运行生成...)。请注意,根据我的理解,我需要通过线程的int返回值使用“return”调用。
连连呢?我想弄清楚是否有一些我错过的与pthreads有关的标志或功能允许线程在结束时重启。
答案 0 :(得分:2)
首先,如果你用pthreads调用上面的函数,你可能遇到了一些麻烦。传递给pthread_create
的函数指针的签名必须是void * functionname(void*)
,也就是说,它必须是一个函数,它接受一个指向void参数的指针并返回一个指向void的指针。
幸运的是,void*
可以在相对较小的痛苦下与int
进行强制转换,因此您的函数的返回可能如下所示:
return (void*) 5;
获得该返回值更为复杂。你回来之后对于继续线程感到困惑是对的;你不能。你想要做的是 join 与线程,它只是等待线程返回。完成后,您可以像以前一样重新启动线程。
pthread_t mythread;
int result;
while(1){
pthread_create(&mythread, NULL, mySuperThread, NULL);
pthread_join(mythread, &result);
/* do something with result */
}