endl: } ///:- Теперь главный

Автор admin Среда, 24 июня 2009 11:32

endl: } ///:- Теперь главный программный поток main() немедленно реагирует на нажатие клавиши Enter и вызывает функцию quit() для DisplayTask. Данный пример также демонстрирует организацию взаимодействия между задачами — задача в программном потоке main() должна приказать задаче DisplayTask завершиться. Поскольку у нас имеется указатель на DisplayTask, кажется, что для завершения задачи достаточно вызвать оператор delete для этого указателя, однако такая программа будет работать ненадежно. Дело в том, что при уничтожении задача может выполнять какую-нибудь важную операцию, и ее прерывание приведет к нестабильному состоянию. В нашем примере задача сама решает, в какой момент она может безопасно завершиться. Чтобы оповестить задачу о необходимости завершиться, проще всего установить логический флаг. Достигнув точки стабильности, задача проверяет флаг и выполняет всю необходимую зачистку перед возвратом управления из run(). Выход из run() сообщает классу Thread о завершении задачи. Наша программа достаточно проста, и никаких проблем с ней быть не должно. Тем не менее, в ней присутствуют мелкие недостатки,


Комментарии закрыты.