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