嘿,我能够创建线程,但它没有加入主...程序没有执行第三个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";
}
}
答案 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
两次。