Лучший способ остановить запуск pthreads с помощью условной переменной - PullRequest
1 голос
/ 21 июня 2011

Я работаю с pthreads в моем коде c. Я создаю и запускаю поток (THREAD_1) в своей основной подпрограмме, где из THREAD_1 я вызываю подпрограмму для повторного создания двух новых потоков (THREAD_2, THREAD_3). Все три потока будут работать параллельно с миллисекундным сном в условном цикле. После выполнения определенного условия я хочу остановить / выйти из двух потоков (THREAD_2, THREAD_3), а затем THREAD_1. Каков наилучший способ сделать это?

1 Ответ

0 голосов
/ 21 июня 2011
            while(true){
                    apr_thread_mutex_lock(mySharedObject->getMutex());
                    while (mySharedObject->getMessagesReady() == 0 && !mySharedObject->getEndThread()) {
                            apr_thread_cond_wait(mySharedObject->getCond(), mySharedObject->getMutex());
                    }
                    if (mySharedObject->getEndThread()){
                            apr_thread_mutex_unlock(mySharedObject->getMutex());
                            break;
                    }

                    apr_thread_mutex_unlock(mySharedObject->getMutex());

                    if (mySharedObject->getMessagesReady()>0){
                             myActiveProducer->send();
                    }

            }

Это способ, которым я это реализовал. Что-то не так ??

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