私はかつて、これを行う比較的大きな組み込み製品に取り組んだことがあります。タイム スライスが無効になり、別のスレッドの実行を許可したい場合、スレッドは明示的に taskDelay を実行しました。
結論として、vxWorks スライシングを無効にすると狂気になります。それがあなたの力の範囲内であれば、それを避けてください。
タスクは完全にプリエンプティブではないため (また、割り込みハンドラーは、通常のタスクが消費するメッセージをキューに入れることしか許可されていませんでした)、システムはそのデータ構造のいずれに対しても、あらゆる種類のロックを不要にしました。タスクは、すべてのデータ構造が一貫している場合にのみ、スケジューラを別のタスクに解放することが期待されていました。
時が経つにつれて、元のプログラマーは移動し、製品を維持および拡張するために新しい開発者に取って代わられました。機能が増えるにつれて、システム全体の応答性が低下しました。時間がかかりすぎるタスクに直面したとき、新しい開発者は単純な解決策をとります: 途中に taskDelay を挿入します。これでいいときもあれば、そうでないときもある…
タスク スライスを効果的に無効にすると、システム内のすべてのタスクが他のすべてのタスクに依存するようになります。3 つ以上のタスクがある場合、または最終的に 3 つ以上のタスクを持つ可能性があると思われる場合でも、それを可能にするシステムを構築する必要があります。