如何使用main函数加入线程

时间:2014-03-16 19:24:15

标签: c++ pthreads

嘿,我能够创建线程,但它没有加入主...程序没​​有执行第三个for循环..我。线程加入部分...任何帮助将不胜感激

这是我的代码:

for(i=0;i<N/2;i++) {
    pthread_create (&thread[i], NULL, thread_sort, (void *) &data[i]);  
}
for(i=0;i<N/2;i++) {
    if( pthread_create (&thread[i], NULL,thread_sort, (void *) &data[i])<0) {
        cout<<"\n Error in creation of threads.....!!!!!!!!";
    } 
    else {
        cout<<"Thread "<<i<<"is Created"<<endl;
    }     
}

for(i=0;i<N/2;i++) {
    pthread_join(thread[i],NULL);
    if (pthread_join(thread[i],NULL)<0) {
        cout<<"\n Error in joining Threads";
    }                
}

1 个答案:

答案 0 :(得分:1)

for(i=0;i<N/2;i++) {
    pthread_join(thread[i],NULL);
    if (pthread_join(thread[i],NULL)<0) {
        cout<<"\n Error in joining Threads";
    }                
}

你试图在这里加入线程两次,你应该拿出第一个pthread_join,IE:

for(i=0;i<N/2;i++) {
    if (pthread_join(thread[i],NULL)<0) {
        cout<<"\n Error in joining Threads";
    }                
}

此外,错误值是否为负值?我发现的文件说&#34;非零,&#34;所以我想知道这应该是pthread_join(thread[i],NULL)!=0

编辑:尝试取出你的第一个循环,它最终会在同一个对象上调用pthread_create两次。