2010-11-12 36 views
0

它是由我的口授我的例程必须有返回值,它需要返回。pthread返回例程

即:

int mySuperThread(void) 

我启动线程和它做什么,它需要做的。被问到的问题是如何不断重新启动线程一次又一次地完成它的工作,同时仍然能够返回一个整数(通过线程的运行生成)。请注意,根据我的理解,我需要通过线程的int返回值使用“返回”调用。

对此提出建议?我试图找出是否有一些标志或functon,我缺少与pthreads相关的线程,当线程结束时它可以重新启动。

回答

2

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

幸运的是,void*可以转换为从int以相对较少的痛苦,所以你的函数的返回可以关注一下:

return (void*) 5; 

获得该返回值是一个涉及多一点。在回归之后继续进行讨论,你是对的。你不能。你想要做的是加入与线程,它只是等待,直到线程返回。完成之后,您可以像以前那样重新启动线程。

pthread_t mythread; 
int result; 
while(1){ 
    pthread_create(&mythread, NULL, mySuperThread, NULL); 
    pthread_join(mythread, &result); 
    /* do something with result */ 
} 
+0

这就是我的想法。谢谢!我相信在给出的问题上有一些错误。有趣的是,即使是我用了不正确的方法签名,它仍然接受它,并没有问题。我正在使用Ubuntu – schone 2010-11-12 05:30:22