Книга: Системное программирование в среде Windows
Комментарии по поводу многоступенчатого конвейера
Комментарии по поводу многоступенчатого конвейера
Данная реализация характеризуется некоторыми особенностями, суть которых частично отражена в комментариях, включенных в листинг программы. На эти же особенности обращают ваше внимание и упражнения 10.6, 10.7 и 10.10.
• Значительные возражения вызывает способ, используемый основным потоком для завершения выполнения передающего и принимающего потоков. Лучшим решением было бы использование конечных интервалов ожидания во внутренних циклах передатчика и приемника и прекращение работы после того, как будет установлен соответствующий глобальный флаг. Другой возможный подход заключается в отмене выполнения потоков, как описано далее в этой главе.
• Обратите внимание на существование симметрии между передающим и принимающим потоками. Как и при реализации очереди, это обстоятельство упрощает проектирование, отладку и сопровождение программы.
• Реализация не сбалансирована в смысле согласования скорости генерации сообщений, емкости конвейера и коэффициента блокирования "передатчик/приемник".
• В данной реализации (программа 10.4) для защиты очередей используются мьютексы. Результаты экспериментов с объектами CRITICAL_SECTION не позволили обнаружить сколько-нибудь заметного ускорения работы программы на однопроцессорной системе (см. приложение В). CS-версия программы, ThreeStageCS, находится на Web-сайте. Аналогичным образом вела себя программа и после того, как в ней была использована функции SignalObjectAndWait.
- Комментарии
- 1.2.2. Комментарии и встроенная документация
- Звонок по поводу оплаты
- Как создавать комментарии к файлам?
- Комментарии к алгоритму Тоома—Кука
- Агрессивный и консервативный варианты производственного конвейера
- Строки кода и комментарии
- Комментарии в программе
- Письма «по поводу»
- 1.4.5. Заключительные соображения по поводу «GNU Coding Standards»
- 14.2.2.3. Предостережения по поводу блокировок
- 14.3.2. Дополнительные замечания по поводу библиотеки shell.rb