C ++:如何在循环中添加pthread而不是"暂停"循环?

时间:2016-02-04 02:01:25

标签: c++ multithreading

我正在学习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

任何人都可以帮我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

调用pthread_detach(thread_id2)而不是pthread_join函数。