音が出るまで、のこと その2
Qt4の本を読むとデータやコードのスレッド間同期をとるためのクラスがQtに用意されているようです。最新のC++ではライブラリでサポートされているのですが、Qtでの実装を使ったほうが今はよさそうです。
QMutex, QReadWriteLock, QSemaphore, QWaitConditionなどのクラスらしいのですが、Qt5ではそのままなのか分からないので、いつものようにQt Assistantで確認しなければなりません。データのリード/ライトに関しての同期ならQReadWriteLockを用いるのがよいかもしれません、と書いてあります。
Qt Assistantで調べてみると、QReadLocker, QWriteLockerなどもあるようです。読み込み時/書き込み時アクセスのロックを行うものでしょうか。今回は読み込みも書き込みも排他的に行う必要があるのでQReadWriteLockが適切だと思われます。
それにしても、Qt Assistantはドキュメントが充実していますね。英語なのですが、分かりにくいより日本語よりは遥かにマシです。いろいろサンプルもあるし。「Synchronizing Threads」というドキュメントは最初にキチンと読んでおくと後々役に立ちそうです。
「入門Qt4プログラミング」の18章 スレッドの同期のところに書いてある共有循環バッファの記述はまさに今回の場合に当てはまります。参考になるかもしれません。
その3へつづく…
« googleのリモートデスクトップが出ましたね | トップページ | 音が出るまで、のこと その3 »
コメント