xecute(new Liftoff(10. i)); }

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

xecute(new Liftoff(10. i)); } catch(Synchronization_Exception& e) { cerr « e.what О « endl; } } III:- Класс SynchronousExecutor, как и ConcurrentExecutor, используется в ситуациях, когда из нескольких задач должна выполняться только одна. Но в отличие от 542 Глава 11 • Многопоточное программирование ConcurrentExecutor класс SynchronousExecutor не создает собственных программных потоков и не управляет ими. Он задействует поток, предоставивший задачу, а все его функции сводятся к синхронизации. Если п программных потоков поставляют задачи класса SynchronousExecutor, никакие две из этих задач не будут работать одновременно. Очередная задача отрабатывает до завершения, и только после этого стартует следующая задача в очереди. Допустим, в нескольких потоках выполняются задачи, использующие файловую систему, но для сохранения переносимости программы вы не хотите блокировать файлы функцией flock() или другими специфическими функциями операционной системы. Одно из возможных решений — запустить эти задачи объектом SynchronousExecutor, чтобы в любой момент времени обрабатывалась только одна из них. В этом случае


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