我为测试pthread写了c程序(使用cygwin)我期待结果是
线程1 线程1 线程2 线程2 线程1 ....
或附近的任何事情告诉我两个线程并行工作 但结果是 线程1 线程1 线程1 线程1 线程1 线程2 线程2 线程2 线程2 线程2 T1 = 0,T2 = 0
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *funa();
void *funb();
int main()
{
//create thread
pthread_t thread1, thread2;
int T1=pthread_create( &thread1, NULL, funa, NULL);
int T2=pthread_create( &thread2, NULL, funb, NULL);
//join thread
pthread_join( thread1, NULL);
pthread_join( thread2, NULL);
//return 0 if sucess
printf("T1=%d , T2=%d",T1,T2);
exit(0);
}
void *funa()
{int i;
for (i=0;i<5;i++)
printf("thread 1\n");
}
void *funb()
{int j;
for (j=0;j<5;j++)
printf("thread 2\n");
}
答案 0 :(得分:0)
从其他评论已经解决的问题细节中退一步,看起来你想要在线程中进行某种排序。
如果是这样,您可以考虑在for循环中添加一些pthread_barrier_wait()
(details)。对屏障的每次调用都将阻塞,直到所有预期的线程都调用屏障。您应该在pthread_barrier_init()
初始化屏障时设置要等待的线程数。