3个主题:
pthread_create(&thread1,
&NULL,
Thread1,
NULL);
pthread_create(&thread2,
&NULL,
Thread2,
NULL);
pthread_create(&thread3,
&NULL,
Thread3,
NULL);
printf("\n\nThreads Created\n");
pthread_join(thread1,0);
printf("Joined Thread1\n");
pthread_join(thread2,0);
printf("Joined Thread2\n");
pthread_join(thread3,0);
printf("Joined Thread3\n");
3个线程运行一段时间并根据控制台的输出,似乎正在工作。
最终,线程1和2在完成工作后死亡(从maint()输出显示正确“显示”已加入线程1/2“
现在,第3个主题仍有一些工作要做,看起来不错。然后,接近处理它的最后几个项目,它“出现”线程3刚刚挂起。它将打印出一些东西到控制台,甚至不会完成句子。
线程3具有小睡眠,锁定和解锁互斥锁(线程1和2正在使用)和条件等待。似乎没有在条件等待中,因为我在调用它之前直接打印出来并且没有看到它。
好像是睡觉,放弃了CPU然后又回来了.....?
还有其他任何可能性或原因吗?
任何解决方案?
感谢。