дить во время операций ввода-в

Автор admin Пятница, 26 июня 2009 11:32

дить во время операций ввода-вывода. Тем не менее в большинстве реализаций такая возможность не поддерживается. if(argc > 1) Thread::sleep(1100): t.interrupts): } catch(Synchronization_Exception& e) { cerr « e.whatO « endl; } } III:- Как видно из листинга, помимо вывода в cout функция run() содержит две точки, в которых может произойти блокировка: вызов Thread::sleep(1000) и вызов cin.get(). Передавая программе любой аргумент командной строки, вы приказываете main() приостановиться на достаточно долгое время, чтобы задача завершила отработку sleep() и вызвала cin.get()!. Если программа запущена без аргумента, вызов sleep() в main() игнорируется. В нашем случае вызов interrupt) случится во время приостановки задачи, и вы увидите, что это приводит к запуску исключения Interrupted_Exception. Если передать программе аргумент командной строки, вы обнаружите, что задача не может быть прервана, если она была заблокирована при вводе-выводе. Прерывание работает для всех блокирующих операций, кроме ввода-вывода2. Это обстоятельство вызывает легкое замешательство при создании потоков, реализующих операции ввода-вы


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