所以我有多个线程访问此函数来检索数据库信息,它是线程安全的吗?C++向量是线程安全的吗?多线程
vector<vector<string> > Database::query(const char* query)
{
pthread_rwlock_wrlock(&mylock); //Write-lock
...
vector<vector<string> > results;
results.push...
pthread_rwlock_unlock(&mylock); //Write-lock
return results;
}
对于编辑 - >有时'修复'>>到>>不是一个好主意,但感谢其余的。
很难确定你在问什么。使用像这样的本地向量是线程安全的,因为它是在堆栈上创建的。但是我们不能告诉你,如果你的函数是线程安全的。 我可以告诉你,这将是低效的,因为在构建你的向量的字符串向量之后,你会返回它的一个副本而不是原始的。 – kfsone