【发布时间】:2010-09-17 22:37:06
【问题描述】:
我有一个关于Boost::Thread 和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 都写入同一个向量)。但是我该如何表达呢?
【问题讨论】:
标签: multithreading mutex boost-thread