Как заставить все темы спать - iphone - PullRequest
0 голосов
/ 18 апреля 2011

-> я делаю приложение для iphone -> у меня есть сценарий, в котором я запускаю количество потоков в фоновом режиме.

-> Теперь предположим, что в главном потоке я получаю событие и должен выполнить какое-то действиев новой фоновой теме.

-> Но когда я выполняю какое-то действие с новым фоновым потоком, мои остальные потоки должны приостанавливаться / спать до тех пор, пока действие не будет завершено.

-> Как только действие закончится, все остальные потоки должны возобновить свою работу.

Я расскажу об этом подробнее, но если у кого-то есть идея, пожалуйста, предоставьте некоторые данные.

Спасибо

1 Ответ

0 голосов
/ 18 апреля 2011

Обычно сигнализация может выполняться с использованием условий 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);
...