ующий пример демонстрирует про

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

ующий пример демонстрирует простейшее применение функции interrupt(): //: СП:Interrupting.срр // Прерывание заблокированного потока //{L} ZThread #i nclude #include “zthread/Thread.h” using namespace ZThread: using namespace std; class Blocked : public Runnable { public: void run() { try { Thread::sleep(1000); cout « “Waiting for get() in run():”; cin.getO; } catch(Interrupted_Exception&) { cout « “Caught Interrupted_Exception” « endl: // Выход из задачи } } }: int main(int argc. char* argv[]) { try { Thread t(new Blocked); Тем не менее, исключения в ZThreads никогда не доставляются асинхронно, поэтому не существует опасности прерывания на середине выполнения команды или вызова функции. А если для захвата мутексов использовался шаблон Guard, при запуске исключения происходит автоматическое освобождение мутексов. 566 Глава 11 • Многопоточное программирование 1 Вообще говоря, sleep() гарантирует только минимальную, а не точно заданную задержку, поэтому возможно (хотя и маловероятно), что sleep(HOO) активизируется раньше sleep(lOOO). 2 В стандарте С++ не сказано, что прерывания не могут происхо


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