【发布时间】:2018-12-04 13:22:20
【问题描述】:
如何从子线程内部(不终止子线程)唤醒主线程(当前由于 sleep() 函数调用而处于休眠状态)?
我想让我的主线程等待来自子线程的信号,而不使用无限循环或其他任何消耗 CPU 功率的东西。
我发现的关于这个主题的唯一事情是主线程唤醒了一个子线程,而不是相反。
【问题讨论】:
-
不要使用 sleep(),而是使用适当的 'blocking-until' 函数并保持合作。
-
使用
pthread_kill向特定线程发送信号。 -
带有定时等待的事件、信号量或条件变量。所有重要的操作系统都有一些可以使用的同步原语。在主线程中创建同步对象,将其作为线程创建参数的一部分发送给工作线程,在需要时在主线程中等待/等待,准备好后在子线程中发出信号。
标签: c multithreading sleep wakeup