c - POSIX 线程中的挂起和恢复

标签 c multithreading posix

我正在学习 POSIX 线程。我的问题 - 如何挂起和恢复 pthread ?像Java中的线程一样,有没有wait、notify等函数?我想根据某些情况多次运行单个pthread。

提前致谢

最佳答案

How to suspend and resume pthread ? Like threads in Java, is there any function like wait, notify etc?

阅读 pthread 中有关条件变量的信息。基本上,条件变量允许您在线程进一步继续之前检查条件。例如,有 3 个线程,只有在某些条件为真时才会继续。如果此条件为假,线程将释放它们所持有的互斥锁并“等待”。当 pthread_mutex_t 类型的共享对象上的锁被释放时,其他一些线程将继续执行它们的操作,因此在某个时间点条件将变为真(希望如此)。检查名为 pthread_cond_wait 的函数。

一旦上述条件成立(或满足),则可以使用函数pthread_cond_signal/pthread_cond_broadcast来“通知”正在等待pthread_cond_t对象。这些线程(在这个简单的解释中为 3 个线程)然后自动获取互斥锁(当然,一次一个线程)并开始处理它们的事务。

检查this教程。

I want to run the single pthread multiple times according to some situations.

愿意进一步解释吗?

关于c - POSIX 线程中的挂起和恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45034907/

相关文章:

c - 如何使用#defined 常量作为 fscanf 中的最大字段宽度?

c - 链接库并在 makefile 中指定路径

java - Android(和引擎)中的确认对话框

c - 尽管管道关闭,读取仍继续阻塞

c - 销毁静态互斥体和 rwlock 初始值设定项

c - 在 execvp() 之前将忽略的信号设置为 SIG_DFL

在c中复制qsort指针的返回值

c++ - 在 C++ 多线程程序中使用指向局部变量的指针

c++ - 条件变量虚假唤醒/循环任务

java - 了解 servlet 和多线程