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
Комментарии закрыты.
Последние комментарии