ndl: if(–countDown == 0) retu

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

ndl: if(–countDown == 0) return: Thread::yield(): } } }: int mainO { try { ThreadedExecutor executor: for(int i =0: i < 5; i++) executor.execute(new Yi eldi ngTask(i)): } catch(Synchronization_Exception& e) { cerr « e.what О « endl: } } III;- Как видите, функция run() объекта задачи представляет собой бесконечный цикл. При вызове yield() вывод программы становится более равномерным, чем без него. Попробуйте закомментировать вызов Thread::yield() и проанализируйте результат. Впрочем, на практике функция yield() применяется крайне редко, и не стоит рассчитывать, что она сможет существенно повысить эффективность работы вашего приложения. Приостановка Другая операция, часто встречающаяся при управлении программными потоками, — их приостановка на заданное число миллисекунд функцией sleep(). Если в предыдущем примере заменить вызов yield() вызовом sleep(), программа принимает следующий вид: //: СП:SleepingTask.срр // Приостановка программного потока функцией sleepO. 544 Глава 11 • Многопоточное программирование //{L} ZThread #include #include “zthread/Thread.h” #include “zthread/ThreadedExecutor.


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