#iphone #objective-c #multithreading #nsthread
#iPhone #objective-c #многопоточность #nsthread
Вопрос:
-> Я создаю приложение для iphone -> У меня есть сценарий, в котором я запускаю несколько потоков в фоновом режиме.
-> Теперь предположим, что в главном потоке я получаю событие и должен выполнить какое-то действие в новом фоновом потоке.
-> Но когда я выполняю какое-либо действие в новом фоновом потоке в то время, все мои остальные потоки должны приостановиться / перейти в спящий режим до завершения действия.
-> После завершения действия все остальные потоки должны возобновить свою работу.
Я буду изучать это подробнее, но если у кого-то есть идея, пожалуйста, внесите свой вклад.
Спасибо
Комментарии:
1. Вы правы, я удалил свой ответ, рассматривали ли вы возможность использования собственных потоков C или вы думали об общем объекте между всеми потоками, скажем, как флаг, когда вы устанавливаете для этого объекта текущий флаг, все рабочие потоки сохраняются до тех пор, пока для этого объекта не будет установлен другой? раньше я использовал этот механизм еще в C#
2. Можете ли вы более подробно описать, что вы хотите сделать? Что делают фоновые потоки? Зачем им нужно делать паузу? Возможно, существует более простое решение, чем любое из предложенных до сих пор.
Ответ №1:
Обычно сигнализацию можно выполнить с использованием условий pthread, используя мьютекс для синхронизации, например:
Создайте мьютекс и переменные условия:
pthread_mutex_init(amp;mutex, NULL);
pthread_cond_init(amp;cond, NULL);
Поток 1: дождитесь сигнала:
pthread_cond_wait(amp;cond, amp;mutex);
Поток 2: Подайте сигнал потоку, ожидающему выполнения условия:
pthread_mutex_lock(amp;mutex);
pthread_cond_signal(amp;cond);
pthread_mutex_unlock(amp;mutex);