线程安全的对象操作
来源:互联网 发布:微信群助手 源码 编辑:程序博客网 时间:2024/05/17 05:55
- CRITICAL_SECTION cs;//全局临界区
- class Lock//加-解锁
- {
- public:
- Lock()
- {
- EnterCriticalSection(&cs);
- }
- ~Lock()
- {
- LeaveCriticalSection(&cs);
- }
- };
- //宏,注意考虑展开后的代码
- #define Get(x,y) inline x Get##y(){Lock l; return m.##y;}
- #define Set(x,y) inline void Set##y(x t){Lock l; m.##y = t;}
- #define Get_Set(x,y) Get(x,y) Set(x,y)
- class A
- {
- struct MM
- {
- int i;
- };
- MM m;
- public:
- A()
- {
- InitializeCriticalSection(&cs);
- }
- ~A()
- {
- DeleteCriticalSection(&cs);
- }
- Get_Set(int,i);
- };
- int main(array<System::String ^> ^args)
- {
- A a;
- a.Seti(10);
- cout<<a.Geti();
- getchar();
- return 0;
- }
- 结果为:10
使用上面方法后,对对象成员的操作多有加-解锁操作,在多线程的情况下可能有好处。
注:本文参照了DirectX中DXUT的构架
- 线程安全的对象操作
- 线程安全的对象池
- 一些线程安全的对象
- C#线程安全对象的内部实现
- 对象耦合的非线程安全
- C++线程安全的对象生命周期管理
- java中线程安全的集合对象
- python 线程安全的对象池
- 线程安全的对象生命期管理
- 线程安全的对象生命周期管理
- C# 如何线程安全的操作控件
- android UI操作不是线程安全的
- AtomicInteger线程安全的操作加减
- Java 中 ++ 操作符的线程安全
- FILE对象线程安全
- C#跨线程操作控件的线程安全方法
- C#跨线程操作控件的线程安全方法
- 不改变使用习惯的情况下为std::stream对象的输入输出操作附加线程安全
- 16进制字符串转为整型
- 该放手就放手
- 聊聊云计算
- 一个简单的C#死锁程序
- P2P-KAD(Kademlia)详解
- 线程安全的对象操作
- 百无聊懒
- 禁止Windows Server 2003 关机时出现的关机理由选择项
- P2P-Kademlia详解2
- 存储的一些东西(HP_UX)
- Ubuntu内核编译
- socket
- 如何通过发送到Soft Key Bar上的消息捕获一些硬按键
- 防止因弹出提示框,而 改变布局字体大小.