2017-08-09 5 views
0

QtにOnReceive(int値)イベントを持つC++プログラムを作成しています。整数値をstd :: vectorに取り込み、push_backします。別のワーカースレッドでは、私はこのベクトルにアクセスすることができ、20の値を待つようにセマフォを設定してから、それらを処理することができます。生産者と消費者の最適化

私はいくつかの最適化をしたいと思います。

私の質問はどのように私のバッファやベクトルを0-4,5-10,11-19の3つの部分に分けることができるのですか?たとえば、ベクトルで5つの値が利用可能になるとすぐに(0から4など) 2番目のワーカーは最初のスレッドがまだ残りの値を取得している間にそれらを処理し始めますか?

このようにして、私はスレッド間で重複したいと思っています。彼らは連続して実行する必要はありません。

ありがとうございます。

+0

インターネットで「ダブルバッファリング」を検索します。 –

答えて

0

ウェイトフリーリングバッファを使用してください。

ブーストがone

注意を持っていると主張し、それはロックフリーのフォルダ内にあるが、すべてのメソッドは、スレッドセーフであると待つのないと主張します。

関連する問題