我正在学习pthread,但我有一个问题。 我想在循环内添加一个线程,以便线程函数可以单独实现,并且循环不会暂停直到线程函数完成。
以下是我的示例代码:
void * numbers(void * a){
cout << "---------------------"<<endl;
int * args = ( int*) a;
int sum =0;
for(int i = 0; i < 1000000000; i++)
sum++;
}
int main(){
int sum2 = 0;
while(1){
sum2 = sum2 + 3;
cout << sum2 << endl;
int num;
pthread_t thread_id2;
pthread_create( &thread_id2, NULL, numbers, (void*) &num);
void *status1;
pthread_join( thread_id2, NULL);
}
return -1;
}
如下所示,代码的结果不是我想要的。
3
---------------------
6
---------------------
9
---------------------
我的想法是循环不断总结sum2而线程函数&#34;数字&#34;在跑。所以我需要的结果应该是:
3
6
9
12
-------------------
15
18 and so on
任何人都可以帮我吗?谢谢!
答案 0 :(得分:1)
调用pthread_detach(thread_id2)而不是pthread_join函数。