【发布时间】:2017-11-27 04:20:51
【问题描述】:
我想做这样的事情:
class BlockingVector{
protected:
std::vector<int> m_vector;
std::mutex m_mutex;
public:
int & operator [](size_t p_index){
std::lock_guard<std::mutex> lock(m_mutex);
return m_vector[p_index];
}
};
我知道,这是完全错误的。 有没有办法用互斥锁重载运算符 []?
正如 Nikos C 所说:它返回对元素的引用,而不是副本。因此使用该元素不是线程安全的。
【问题讨论】:
-
你想完成什么?
-
为什么会出错?您对代码有什么问题?你如何使用它?请read about how to ask good questions,并学习如何创建Minimal, Complete, and Verifiable Example。
-
是什么让你认为这是“完全错误的”?
-
@Yuushi 它返回对元素的引用,而不是副本。因此使用该元素不是线程安全的。
-
@HoànTrần 在不知道您的限制、要求和允许的情况下:不。
标签: c++ operator-overloading mutex