喜ばしいお知らせがあります! 効果を生み出すマルチスレッドのMuseが完成しました。
前回[10309]で 「初回の音出しでは、メインウィンドウのシークバーが一瞬止まってしまいました。」と書きましたが、 これは、シークバーの移動で演奏をモタレさせないよう、 PostMessageで移動させていたのが原因でした。 (自分でコーディングしておきながら、忘れてました)汗
そこで、 現行バージョンでは、演奏と一緒に*WAVEを鳴らすと演奏がひっかかるデータを作り、 *WAVEをスレッドポストする新バージョンで実行してみたら、演奏は滑らかに通過しました! 確実にマルチスレッドの効果が確認できたのです。
勢い今度は、 フォントのロード時点で演奏がひっかることがあるテキスト表示に関しても マルチスレッド化したところ、その効果も確認できました。 初期ロード時にステルス描画するという対処療法部分はバッサリ削除した状態でもモタレませんでした。 (なお、この実験は私の環境では効果を確認しづらかったので Αφροδιτηさんにご協力頂きました。ここに、謹んでお礼申し上げます。)
また、 るうさんからスレッド優先度のアイディアを頂きましたが、 それをしなくても十二分に効果を得ましたので、今回は見送りました。m__m
という訳で今回、皆さんとやり取りしたマルチスレッド関係の話題は、以下の様な成果を得て閉幕です。 ・文字表示の演奏モタレを抜本的に解決(更にセンタリングなどの今後の重い処理開発も可能に) ・WAVEコマンドの演奏モタレを抑止(ただし、WAVE発音自体の初回タイムラグは従前どおりです) ・実行モジュールmuse.exeが、2/3に減量(諸熊さんが気付かれたとおり、Readme.txtの半分の容量です) ・対処療法である初期ロード時のステルス描画の削除(派生的に色コードをconst化できました)
思いの外、多くの収穫でした。 心から感謝致します。
脳筋トレ、続けてよかった(笑)。
|