Linux 编程调试指南:GDB 与 Valgrind 实战
1. 质数判断与线程同步基础
在编程中,质数判断是一个常见的问题。例如,990231117 不是质数,而 9902343047 是质数。在多线程环境下,线程同步是确保程序正确执行的关键。当使用 pthread_cond_wait() 函数在 while 循环中等待时,需要同时传入条件变量(如 ready )和互斥锁(如 lock )。这样,它就知道要释放哪个互斥锁以及等待哪个信号。在等待期间,互斥锁会被释放,其他线程可以对 primeid 变量进行写入操作。其他线程在写入之前会先使用互斥锁锁定该变量,写入完成后会发出条件变量信号并释放互斥锁,从而唤醒正在等待的 main() 函数。 main() 函数会检查哪个线程完成了任务,并使用 pthread_join() 函数进行线程合并,然后将 primeid 变量重置为 0,继续等待下一个线程完成信号。由于有两个线程需要等待, main() 函数中的 for 循环会执行两次。每个线程可以使用 pthread_self() 函数获取自己的线程 ID。
相关手册页:
| 函数 | 手册页 |
| ---- | ---- |
| pthread_cond_init() |
超级会员免费看
订阅专栏 解锁全文
1584

被折叠的 条评论
为什么被折叠?



