その8
マルチスレッディング part2
内部では単一スレッドにしようと考えてますがスレッドの制御が面倒です。
スレッドには忙しい状態と暇な状態があります。
忙しい時はCPUを独り占めして働き続けます。
60fps、30fpsでフレーム管理されてまして、暇なときはsleepで眠ってます。
忙しい状態while(true) {
...
}
暇な状態while(true) {
sleep // 自動的に60fpsに調整される
}
二つのコードを同時に実行した場合どうなるでしょうか。
片方は忙しく働いてるままではもう片方が全く実行されなくなるので、何回かずつでタスクを交替します。
暇な状態は60fpsを保たなければなりません。しかし忙しい状態を保つ為にsleepはできません。
ということでスレッドごとにタイマを保持し(スレッド的にsleep)、全てのスレッドがsuspend状態になった時のみにsleepするようにします。
でもこれ、スレッドを増やすごとにCPUの負担が大きくなります。
なのでネイティブコードででも実装できるように、スレッドとプラグインという二つの方法を追加しようと思います。