Chapter 16

13章 マルチタスク(1)

misawa
misawa
2022.01.08に更新

ちょうど欲しいと思い始めたマルチタスクが来た.

協調的マルチタスク

実質 yield.
なぜか復帰がうまくいかずにくっっっっそハマったのだが, 原因は DS, ES, FS, GS の descriptor を設定していなかったことで General protection fault が起きていたことだった.

プリエンプティブマルチタスク

シャドウバッファには Mutex を介しているので, これをやると, シャドウバッファに書き込むビジーループをしているタスクにメインループをしているタスクがブロックされる.
C++ では単にアクセス競合を無視しているのだろうか.
9 章の頃からやろうと思いつつ後回しにしていた, マルチバッファ(トリプルバッファ)を実装した.
それに伴い, 後回しにしていたリファクタリングをある程度やった.