STL线程安全
来源:互联网 发布:有钱人的生活知乎 编辑:程序博客网 时间:2024/06/03 21:58
想要使用STL时是线程安全的,需要自己处理而不是依赖STL的实现。可以手工做同步控制,如下面:
vector<int> v;
...
getMutexFor(v);
vector<int>::iterator first5(find(v.begin(),v.end(),5));
if(first5!=v.end())
{
*first5=0;
}
releaseMutexFor(v);
但是这种方法,可能忘了调用releaseMutexFor,这样这个互斥锁就永远也不会被释放。更为面向对象的方法是创建一个Lock类,它在构造函数中获得一个互斥体,在析构函数中释放它,从而尽可能减少getMutexFor调用,没有调用相应的releaseMutexFor调用的可能性。这样的类(实际上是一个类模板)看起来大概是:
template<typename Container>
class Lock{
public:
Lock(const Container& container ):c(container)
{
getMutexFor(c);
}
~Lock()
{
ReleaseMutexFor(c);
}
private:
const Container& c;
};
使用Lock:
vector<int>v;
...
{ //创建新的代码块
Lock<vector<int> >lock(v); //创建互斥体
vector<int>::iterator first5(find(v.begin(),v.end(),5));
if (first5!=v.end())
{
*first5=0;
}
} //代码块结束,自动释放互斥体
即使不创建新的代码块,在作用域结束,对象自动析构,只不过可能晚一点,但是如果是忘了调用releaseMutexFor,则永远不会释放互斥体。
0 0
- STL线程安全
- STL线程安全
- STL-----线程安全
- STL容器线程安全
- STL容器线程安全
- STL线程安全的解决方法
- STL的线程安全解决方案.
- STL线程安全的解决方法
- STL容器的线程安全?
- stl map非线程安全
- STL的线程安全解决方案.
- STL的线程安全解决方案.
- Effective STL(4)-线程安全
- STL的线程安全解决方案
- STL学习笔记之容器线程安全
- STL中线程安全的容器分析
- 关于STL容器线程安全思考
- 关于STL容器的线程安全特性
- C# 操作EXCEL
- 【C++】boost::bind和函数对象一起使用实现便捷的异步编程
- C学习笔记2--赋值语句 输出 输入
- web-inf
- uva 11280 状态压缩+最短路
- STL线程安全
- MFC使用ADO连接数据库的问题:error C2059: 语法错误 : “<L_TYPE_raw>”
- textSize 设置
- ViewFlipper的使用
- 点击Layout跳转时空指针异常
- [杭电]A + B Again
- ios如何判断设备上是否安装了某款软件
- HTML5雨滴特效,晶莹剔透
- 如何编写一个完整的Linux命令