複数のスレッドで実行したい次の関数があります。
float * readWrite(int & idx, const float * vector, const int & dimension){
float * subPart = new float[dimension];
for(int i=0; i < dimension; i++)
subPart[i] = *(v+idx*dimension+i);
idx++;
return subPart;
}
したがって、各スレッドは変数 idx を読み取り、それをインクリメントします。読み手と書き手が同時に入ることは絶対に許されないでほしい。解決策は、idx が変更された場合にのみ、すべてのスレッドが idx にアクセスし、実際にクリティカル セクション (boost::mutex) を作成できるようにすることです。デッドロックを回避し、読み取りアクセスを遅くするC++ 11 std::mutexでも、ブーストを使用してそれを行うにはどうすればよいですか。
ありがとう