ВУЗ:
Составители:
221
void pthread_testcancel()
В соответствии со стандартом POSIX точками отмены являются вы-
зовы многих «обычных» функций, например open, pause и write.
Тем не менее, выполнение потока может быть прервано принуди-
тельно, не дожидаясь точек отмены. Для этого необходимо перевести
поток в режим немедленного завершения, что делается с помощью вы-
зова функции
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL)
Вызов функции
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL)
снова переводит поток в режим отложенного досрочного завершения.
8.2.5 Синхронизация потоков
При выполнении нескольких потоков во многих случаях необходи-
мо синхронизировать их взаимодействие. Существует несколько спосо-
бов синхронизации потоков:
взаимные исключения – мьютексы (Mutex – MUTial EXclusion);
переменные состояния;
семафоры.
Механизм использования переменных состояния и семафоров в
многопоточных приложениях аналогичен механизму использования
этих методов синхронизации в многопроцессных приложениях.
Механизм мьютексов представляет общий метод синхронизации
выполнения потоков. Мьютекс можно определить как объект синхрони-
зации, который устанавливается в особое сигнальное состояние, когда
не занят каким-либо потоком. В любой момент мьютексом может вла-
деть только один поток.
Использование мьютексов гарантирует, что только один поток в
некоторый момент времени выполняет критическую секцию кода.
Мьютексы можно использовать и в однопоточном коде.
Доступны следующие действия с мьютексом: инициализация, уда-
ление, захват или открытие, попытка захвата.
Объекты синхронизации потоков являются переменными в памяти
процесса и обладают живучестью объектов процесса. Потоки в различ-
ных процессах могут связаться друг с другом через объекты синхрони-
зации, помещенные в разделяемую память потоков, даже в случае, когда
потоки в различных процессах невидимы друг для друга.
Страницы
- « первая
- ‹ предыдущая
- …
- 219
- 220
- 221
- 222
- 223
- …
- следующая ›
- последняя »
