0

我有以下希望由多个线程运行的函数:

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 来避免死锁和减慢读取访问速度。

谢谢

4

0 回答 0