09/03/15 20:09:14
>>492
ワーカースレッドというのは、作業を行うスレッドという程度の意味です。
信号処理中はGUIが不要のようですので、GUIは1個のスレッドにまとめて下さい。
以下、基本は次のような処理になります。Q0とQ1のアクセスを排他制御して下さい。
プライマリスレッド
メインウィンドウの作成。
バッファ群を作成する。例えば5ms用のバッファをN個作成して、
2個のキューQ0(未使用バッファ用)とQ1(充填済みバッファ用)を作成する
バッファを全てQ0に格納し、スレッドA・Bを作成・実行する。
以降はGUIによるスレッドA・Bのコントロールを行う
スレッドA(バッファ充填処理)
1.信号受信処理の初期化
2.Q0からバッファを取り出す。無ければ待つ。
3.バッファを充填する処理(この辺で外部からのスレッド終了通知チェック)
4.バッファが一杯になったらQ1へ入れ、2へ戻る
スレッドB(信号処理スレッド)
#スレッドAで、Q1の格納数が0->1になったとき起こされる。
1.Q1からバッファを取り出す(なければ待つ)
2.信号処理(この辺で外部からのスレッド終了通知チェック)
3.結果の出力
4.バッファをQ0へ入れ、1へ戻る