時間の掛かる処理を別スレッドで実行する

 - by Don

これは伺かアドベントカレンダー2012の12日目の記事です。

時間のかかる処理を行うSAORI

プログラムは通常「スレッド」と呼ばれるものの上で動作していますが、並行して別の処理を行いたい場合があります。この時、もう一つスレッドを立ち上げ、処理が完了したら元のスレッドに通知するという方法がとられます。

SAORIの中には時間のかかる処理を行うものがあります。いずれも別のスレッドに処理を任せて、終わったらメインスレッドを司るベースウェアに対してDirectSSTPにより処理の完了を通知する方法をとっています。

httpc.dll
HTTPクライアントSAORI。Web上のリソースのダウンロードを非同期で行うオプションがあります。
mciaudior.dll
音楽再生SAORI。再生が終了するまでゴーストがフリーズするのはさすがにあり得ないので、別スレッドで再生処理が完了次第DirectSSTPで通知されます。
dialog.dll
ダイアログを表示してユーザの入力を受け付けるSAORI。ユーザの入力が完了するまでゴーストをフリーズさせておくわけにはいかないので、入力が完了してダイアログがクローズする時にDirectSSTPで結果が通知されます。

マルチスレッドをサポートしたSHIORI

SHIORIの中にはスレッドの作成ができるものがあります。最近でいうとというSIHORIが話題になりました。時間のかかる処理を行うゴーストを作る際には利用を検討してみてはいかがでしょうか。

No comments yet.