pthread返回例程

时间:2010-11-12 05:13:22

标签: c pthreads

这是由我决定我的例程必须有一个返回值,它需要返回。

即:

int mySuperThread(void)

我启动线程并完成它需要做的事情。问题是如何连续重新启动线程一次又一次地完成其工作,同时仍然能够返回一个整数(通过线程的运行生成...)。请注意,根据我的理解,我需要通过线程的int返回值使用“return”调用。

连连呢?我想弄清楚是否有一些我错过的与pthreads有关的标志或功能允许线程在结束时重启。

1 个答案:

答案 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 */
}