我目前正在使用pthreads的項目。到目前爲止,該項目啓動用戶指定數量的線程,然後在每個線程上執行一些工作,然後關閉。每個線程都存儲在一個動態分配的內存數組中。我做到這一點使用:pthread返回值到數組
pthread_create(&(threads[i]), NULL, client_pipe_run, (void *) ¶m[i]);
我下一步需要做的是存儲這些線程的返回值:
threads = malloc(number_of_threads * sizeof(pthread_t));
然後我在一個for循環創建每個線程。我的理解是,我需要傳遞pthread_join指針的地址,我希望返回值存儲在這裏。這是我有點困惑的地方。我很好地指出這一點,然後我的大腦有一個融化哈哈。這是我對如何達致這想法,但我不相信這是正確的:
int *return_vals = malloc(sizeof(int) * number_of_threads);
for(i = 0; i< number_of_threads; i++)
{
pthread_join(&(threads[i]),(void *) &(return_vals[i]));
}
然後得到的返回值,我會做類似的東西:
int val = *(return_val[0]);
任何幫助的這將不勝感激!
你結帳這篇文章:http://stackoverflow.com/questions/2251452/how-to-return-a-value-from-thread-in-c – zzk 2013-03-04 19:03:24