从睡眠中唤醒主线程
Posted
技术标签:
【中文标题】从睡眠中唤醒主线程【英文标题】:Wake up main thread from sleep 【发布时间】:2018-12-04 13:22:20 【问题描述】:如何从子线程内部(不终止子线程)唤醒主线程(当前由于 sleep() 函数调用而处于休眠状态)?
我想让我的主线程等待来自子线程的信号,而不使用无限循环或其他任何消耗 CPU 功率的东西。
我发现的关于这个主题的唯一事情是主线程唤醒了一个子线程,而不是相反。
【问题讨论】:
linux.die.net/man/3/pthread_cond_signal ? 不要使用 sleep(),而是使用适当的 'blocking-until' 函数并保持合作。 使用pthread_kill
向特定线程发送信号。
带有定时等待的事件、信号量或条件变量。所有重要的操作系统都有一些可以使用的同步原语。在主线程中创建同步对象,将其作为线程创建参数的一部分发送给工作线程,在需要时在主线程中等待/等待,准备好后在子线程中发出信号。
【参考方案1】:
如果您只想暂停线程,直到它收到来自另一个线程的信号,这正是pause function 的用途。
pause() 导致调用进程(或线程)休眠,直到 发出的信号要么终止进程,要么导致 调用信号捕获函数。
【讨论】:
以上是关于从睡眠中唤醒主线程的主要内容,如果未能解决你的问题,请参考以下文章