0

我为测试 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");

}
4

1 回答 1

0

从其他评论已经解决的问题细节中退后一步,看起来你想要在你的线程中进行某种排序。

如果是这样,您可能需要考虑在 for 循环中添加一些pthread_barrier_wait()详细信息)。每次调用屏障都会阻塞,直到所有预期的线程都调用屏障。您应该设置在初始化屏障时要等待的线程数pthread_barrier_init()

于 2013-07-08T01:10:04.077 回答