ак отмечалось ранее, исключени
Автор admin Пятница, 26 июня 2009 11:32
ак отмечалось ранее, исключение составляют операции ввода-вывода, которые не прерываются). Но что, если написанный вами код может включать или не включать блокировку в зависимости от условий своего выполнения? Если бы выход всегда производился только по запуску исключения в блокирующем вызове, в некоторых случаях выход из цикла run() стал бы невозможным. Следовательно, если задача завершается вызовом interrupt(), необходимо предусмотреть вторую возможность выхода на тот случай, если в цикле run() не будет сделано ни одного блокирующего вызова. Такую возможность предоставляет статус прерывания, устанавливаемый вызовом interrupt(). Для проверки статуса прерывания используется функция interrupted(). Она не только сообщает, вызывалась ли ранее функция interrupt(), но и сбрасывает статус прерывания. Сброс статуса прерывания гарантирует, что библиотека не 568 Глава 11 • Многопоточное программирование оповестит о прерывании задачи дважды. Вы будете оповещены либо одним вызовом Interrupted_Exception, либо одной успешной проверкой Thread::interrupted(). Если вам потребуется снова проверить, была ли прервана за
Комментарии закрыты.
Последние комментарии