Boost::Thread
我有一个关于and的新手问题Mutex
。
我想启动以下许多并行实例Worker
,并且它们都写入相同的std::vector
:
struct Worker {
std::vector<double>* vec;
Worker(std::vector<double>* v) : vec(v) {}
void operator() {
// do some long computation and then add results to *vec, e.g.
for(std::size_t i = 0; i < vec->size(); ++i) {
(*vec)[i] += some_value;
}
}
};
我知道 Worker 必须vec
在写入之前锁定并在完成后解锁它(因为所有 Worker 都写入同一个向量)。但是我该如何表达呢?