Однажды я работал над относительно большим встраиваемым продуктом, который делал это. Разделение времени было отключено, и потоки явно указывали задержку задачи, когда хотели разрешить выполнение другого потока.
Вынужден сделать вывод: отключение слайсинга vxWorks ведет к безумию. Избегайте этого, если это в ваших силах.
Поскольку задачи были полностью неупреждающими (а обработчикам прерываний разрешалось ставить сообщение в очередь только для использования обычной задачей), система обходилась без какой-либо блокировки для любой из своих структур данных. Ожидалось, что задачи высвободят планировщик для другой задачи только в том случае, если все структуры данных будут согласованы.
Со временем первоначальные программисты ушли, и их заменили новые разработчики, чтобы поддерживать и расширять продукт. По мере роста количества функций система в целом становилась менее отзывчивой. Столкнувшись с задачей, которая занимала слишком много времени, новые разработчики выбирали простое решение: вставляли taskDelay посередине. Иногда это было нормально, а иногда нет...
Отключение разделения задач фактически делает каждую задачу в вашей системе зависимой от любой другой задачи. Если у вас есть более трех задач или вы даже думаете, что в конечном итоге у вас может быть более трех задач, вам действительно нужно создать систему, которая позволит это сделать.
person
DGentry
schedule
27.09.2008