【问题标题】:How to make all threads sleep - iphone如何让所有线程休眠 - iphone
【发布时间】:2011-04-18 10:03:40
【问题描述】:

-> 我正在制作一个 iphone 应用程序 -> 我有一个在后台运行多个线程的场景。

-> 现在假设在主线程上我收到一个事件并且必须在一个新的后台线程中执行一些操作。

->但是当我当时在新的后台线程上执行一些操作时,我的所有其他线程应该暂停/休眠直到操作完成。

-> 一旦动作结束,所有其他线程都应该恢复它们的操作。

我将对此进行更多探索,但如果有人有想法,请提供一些意见。

谢谢

【问题讨论】:

  • 你说得对,我已经删除了我的答案,你有没有考虑使用 Native C 线程,或者你有没有想过所有线程之间的共享对象让我们说像一个标志,当你把这个 Objet 设置为所有工作线程的当前标志一直保持到该对象的另一组?我曾经在 C# 中使用过这个机制
  • 你能更详细地描述你想要做什么吗?后台线程在做什么?为什么他们需要暂停?可能有比目前任何建议的更简单的解决方案。

标签: iphone objective-c multithreading nsthread


【解决方案1】:

通常可以使用 pthread 条件完成信号发送,使用互斥锁进行同步,如下所示:

创建互斥量和条件变量:

    pthread_mutex_init(&mutex, NULL);
    pthread_cond_init(&cond, NULL);

线程 1:等待信号:

    pthread_cond_wait(&cond, &mutex);

线程 2:通知线程等待条件:

    pthread_mutex_lock(&mutex);
    pthread_cond_signal(&cond);
    pthread_mutex_unlock(&mutex);

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2021-11-20
    相关资源
    最近更新 更多