Синхронизация потоков iPhone - PullRequest
0 голосов
/ 22 июля 2010

Я разработчик Java и мне нужно синхронизировать потоки в iPhone. У меня есть поток, он вызывает другой и должен дождаться окончания этого дочернего потока. В Java я использую монитор, вызывая wait / notify

Как я могу запрограммировать это в iphone?

спасибо

Ответы [ 3 ]

1 голос
/ 22 июля 2010

NSConditionLock делает всю работу

0 голосов
/ 22 июля 2010

Лично я предпочитаю pthreads. Чтобы заблокировать завершение потока, вы хотите pthread_join В качестве альтернативы, вы можете установить pthread_cond_t и заставить вызывающий поток ждать этого, пока дочерний поток не уведомит об этом.

void* TestThread(void* data) {
    printf("thread_routine: doing stuff...\n");
    sleep(2);
    printf("thread_routine: done doing stuff...\n");
    return NULL;    
}

void CreateThread() {
    pthread_t myThread;
    printf("creating thread...\n");
    int err = pthread_create(&myThread, NULL, TestThread, NULL);
    if (0 != err) {
        //error handling
        return;
    }
    //this will cause the calling thread to block until myThread completes.
    //saves you the trouble of setting up a pthread_cond
    err = pthread_join(myThread, NULL);
    if (0 != err) {
        //error handling
        return;
    }
    printf("thread_completed, exiting.\n");
}
0 голосов
/ 22 июля 2010

Читать о NSOperation зависимостях , а также NSNotification уведомлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...