关于 c:pthread 返回例程

pthread returning routine

我的例程必须有一个返回值并且需要返回。

即:

1
int mySuperThread(void)

我启动线程,它会做它需要做的事情。被问到的问题是如何不断地一次又一次地重新启动线程来完成它的工作,同时仍然能够返回一个整数(它是通过线程的运行生成的......)。请注意,据我了解,我需要通过线程的 int 返回值使用"return"调用。

建议?我试图弄清楚我是否缺少一些与 pthreads 相关的标志或函数,这些标志或函数允许线程在结束时重新启动。


首先,如果您使用 pthreads 调用上述函数,您可能会遇到一些麻烦。传递给 pthread_create 的函数指针的签名必须是 void * functionname(void*),也就是说,它必须是一个函数,它接受一个指向 void 参数的指针并返回一个指向 void 的指针。

幸运的是,void* 可以以相对较小的痛苦与 int 相互转换,因此您的函数的返回可能如下所示:

1
return (void*) 5;

获取该返回值有点复杂。您对返回后继续线程感到困惑是对的;你不能。你想要做的是加入线程,它只是等到线程返回。完成后,您可以像以前一样重新启动线程。

1
2
3
4
5
6
7
pthread_t mythread;
int result;
while(1){
    pthread_create(&mythread, NULL, mySuperThread, NULL);
    pthread_join(mythread, &result);
    /* do something with result */
}