我有以下希望由多个线程运行的函数:
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)。我怎么能用 boost 甚至 C++11 std::mutex 来避免死锁和减慢读取访问速度。
谢谢