Книга: Программирование для Linux. Профессиональный подход
Листинг 4.9. (cxx-exit.cpp) Безопасное завершение потока в C++
Листинг 4.9. (cxx-exit.cpp) Безопасное завершение потока в C++
#include <pthread.h>
class ThreadExitException {
public:
/* Конструктор, принимающий аргумент RETURN_VALUE, в котором
содержится возвращаемое потоком значение. */
ThreadExitException(void* return_value) :
thread_return_value_(return_value) {
}
/* Реальное завершение потока. В программу возвращается
значение, переданное конструктору. */
void* DoThreadExit() {
pthread_exit(thread_return_value_);
}
private:
/* Значение, возвращаемое в программу при завершении потока. */
void* thread_return_value_;
};
void do_some_work() {
while (1) {
/* Здесь выполняются основные действия... */
if (should_exit_thread_immediately())
throw ThreadExitException(/* поток возвращает */NULL);
}
}
void* thread_function(void*) {
try {
do_some_work();
} catch (ThreadExitException ex) {
/* Возникла необходимость завершить поток. */
ex.DoThreadExit();
}
return NULL;
}
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Что делать, если при установке принтера появляется сообщение Невозможно завершение операции. Подсистема печати недоступн...
- Завершение транзакций
- Листинг 15.11. Код для загрузки файла с Web-сервера
- Сравнение C# и C++
- Шаг 6 Завершение продажи на кассе, предложение сопутствующих товаров
- Досрочное завершение сервера
- Возле часов постоянно отображается значок Безопасное извлечение устройства, который предлагает отключить жесткий диск и ...
- При попытке установить принтер появляется сообщение Невозможно завершение операции. Подсистема печати недоступна. В чем ...
- Не всегда отображается значок Безопасное извлечение устройства, когда вставляю «флэшку». Это началось после установки ст...
- 2.5. Завершение установки
- Листинг 3.1. Конфигурационный файл lilo.conf