多线程的那点儿事(之C++锁)
来源:互联网 发布:php mysqli connect 编辑:程序博客网 时间:2024/05/23 22:38
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
编写程序不容易,编写多线程的程序更不容易。相信编写过多线程的程序都应该有这样的一个痛苦过程,什么样的情况呢?朋友们应该看一下代码就明白了,
- void data_process()
- {
- EnterCriticalSection();
- if(/* error happens */)
- {
- LeaveCriticalSection();
- return;
- }
- if(/* other error happens */)
- {
- return;
- }
- LeaveCriticalSection();
- }
那么,有没有可能利用C++的特性,自动处理这种情况呢?还真有。我们看看下面这个代码,
- class CLock
- {
- CRITICAL_SECTION& cs;
- public:
- CLock(CRITICAL_SECTION& lock):cs(lock){
- EnterCriticalSection(&cs);
- }
- ~CLock() {
- LeaveCriticalSection(&cs);
- }
- }
- class Process
- {
- CRITICAL_SECTION cs;
- /* other data */
- public:
- Process(){
- InitializeCriticalSection(&cs);
- }
- ~Process() {DeleteCriticalSection(&cs);}
- void data_process(){
- CLock lock(cs);
- if(/* error happens */){
- return;
- }
- return;
- }
- }
其实,这就是一个c++的trick。
0 0
- 多线程的那点儿事(之自旋锁)
- 多线程的那点儿事(之windows锁)
- 多线程的那点儿事(之C++锁)
- 多线程的那点儿事(之原子锁)
- 多线程的那点儿事(之读写锁)
- 多线程的那点儿事(之嵌套锁)
- 多线程的那点儿事(之自旋锁)
- 多线程的那点儿事(之无锁队列)
- 多线程的那点儿事(之顺序锁)
- 多线程的那点儿事(之自旋锁)
- 多线程的那点儿事(之windows锁)
- 多线程的那点儿事(之C++锁)
- 多线程的那点儿事(之原子锁)
- 多线程的那点儿事(之读写锁)
- 多线程的那点儿事(之嵌套锁)
- 多线程的那点儿事(之无锁队列)
- 多线程的那点儿事(之原子锁)
- 多线程的那点儿事(之自旋锁)
- 各种类型转换 C++
- 记录我的Android学习
- android viewpager中的fragment 延迟加载数据
- vs2010新加一个多工程的解决方案
- VS2013和Oracle10
- 多线程的那点儿事(之C++锁)
- cocos2dx:C++层通过JniHelper调用JAVA层代码进而调用Android手机应用接口
- namespace 名字空间
- 阿里天池特征统计工作
- swift中的selector
- Unity3D协程介绍 以及 使用
- textarea赋值
- linux串口收发数据不对(由于流控等设置不对导致)
- 13-SQLite之group by