Главная страница Взаимодействие нетривиальных процессов
Результаты синхронизации потоков в табл. А.4 приведены значения времени, нужного одному или нескольким потокам для увеличения счетчика в разделяемой памяти с использованием различных средств синхронизации в Solaris 2.6, а на рис. А.З показан график этих значений. Каждый поток увеличивает значение счетчика 1 ООО ООО раз, а количество потоков меняется от 1 до 5. В табл. А.5 приведены эти же значения для Digital Unix 4.0В, а на рис. А.4 - график этих значений. Мы увеличиваем количество потоков, чтобы проверить правильность кода. Кроме того, при добавлении потоков время работы программы может начать расти нелинейно. Блокировка fcntl может использоваться только одним потоком, поскольку эта форма синхронизации предназначена только для использования между несколькими процессами, а не потоками одного процесса. 12 3 4 количество потоков Рис. А.З. Время увеличения счетчика в разделяемой памяти (Solaris 2.6) В Digital Unix 4.0В значения для семафоров Posix оказываются непомерно большими, если работает более одного потока, что указывает на наличие какой-то аномалии. На графике мы эти значения не приводим. ПРИМЕЧАНИЕ - Одна из возможных причин этой аномалии заключается в том, что в этой программе синхронизация проверяется неправильно. В данном случае потоки не делают ничего полезного, и все время уходит на синхронизацию. Поскольку потоки создаются с внут-рипроцессной конкуренцией, при потере управления потоком блокировка сохраняется, поэтому поток, получающий управление, выполняться дальше не может. Таблица А.4. Время увеличения счетчика в разделяемой памяти для Solaris 2.6 (в секундах)
1 2 3 4 5 количество потоков Рис. А.4. Время увеличения счетчика в разделяемой памяти (Digital Unix 4.0В) Таблица А.5. Время увеличения счетчика в разделяемой памяти в Digital Unix 4.0В (в секундах)
Результаты синхронизации процессов в табл. А.4 и А.З и на соответствующих рисунках были приведены результаты синхронизации потоков одного процесса. Интересно посмотреть, как взаимодействуют разные процессы. В табл. А.6 и на рис. А.З приведены результаты измерения времени увеличения счетчика несколькими процессами в Solaris 2.6, а в таб-л. А.7 и на рис. А.6 - в Digital Unix 4.0В. Результаты похожи на полученные для потоков, однако в Solaris 2.6 теперь получаются одинаковые результаты для первых двух типов семафоров. Мы приводим на графике только первое значение для fcntl, поскольку последующие слишком велики. Как отмечалось в разделе 7.2, 1 2 3 4 5 количество процессов Рис. А.5. Время увеличения счетчика в разделяемой памяти (Solaris 2.6)
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |