私のプロジェクトにはキュー、サーバー、タイマーがあります。サーバーはデータを受信してキューに入れ、タイマーがキューを処理します。キューが処理されると、外部プロセスはpopenでオープンされます。つまり、popenはプロセスが終了するまでタイマーをブロックします。ノンブロッキングタイマーとサーバーのソリューションはブーストスレッドですか?
私が間違っていても、サーバとタイマーの両方が同じio_serviceにリンクされているため、サーバがデータを受信すると、io_serviceが次のイベントに進むのをブロックしてしまいます。キュー内のプロセスが実行されている場合はタイマーブロック。
私はboost :: threadに基づいたソリューションで考えていますが、私はスレッドを使用したことがないので、どのアーキテクチャを使うべきかはわかりません。私のオプションは次のとおりです。
2つのスレッド - タイマー用とサーバー用の2つのスレッド、それぞれ独自のio_serviceを使用します 1つのスレッド - 独自のio_serviceを持つタイマーのスレッドです。サーバーは、キュー(簡単なマップ)を共有する必要があります両方の方法では、メインプロセスに
ままなので、私は誰かが見てみることを望んでいる場合は、私がミューテックスや他のもの
といくつかの問題があると思いますコードは、https://github.com/MendelGusmao/CGI-for-LCD-Smartie
ありがとうございます!
これは役立つ可能性があります:http://stackoverflow.com/questions/2146566/blocking-queue-for-thread-producer-consumers-for-win32-c –
@MendelGusmao - 以下の回答のいずれかが役に立ちましたか? – Dennis