【问题标题】:Wake up main thread from sleep从睡眠中唤醒主线程
【发布时间】:2018-12-04 13:22:20
【问题描述】:

如何从子线程内部(不终止子线程)唤醒主线程(当前由于 sleep() 函数调用而处于休眠状态)?

我想让我的主线程等待来自子线程的信号,而不使用无限循环或其他任何消耗 CPU 功率的东西。

我发现的关于这个主题的唯一事情是主线程唤醒了一个子线程,而不是相反。

【问题讨论】:

  • 不要使用 sleep(),而是使用适当的 'blocking-until' 函数并保持合作。
  • 使用pthread_kill 向特定线程发送信号。
  • 带有定时等待的事件、信号量或条件变量。所有重要的操作系统都有一些可以使用的同步原语。在主线程中创建同步对象,将其作为线程创建参数的一部分发送给工作线程,在需要时在主线程中等待/等待,准备好后在子线程中发出信号。

标签: c multithreading sleep wakeup


【解决方案1】:

如果您只想暂停线程,直到它收到来自另一个线程的信号,这正是pause function 的用途。

pause() 导致调用进程(或线程)休眠,直到 发出的信号要么终止进程,要么导致 调用信号捕获函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2011-03-28
    相关资源
    最近更新 更多