mfc CAtomicPtr实例
时间: 2023-10-07 17:08:26 浏览: 33
CAtomicPtr 是 MFC 中的一个原子指针类,用于实现线程安全的指针操作。下面是一个 CAtomicPtr 实例的示例代码:
```cpp
class CMyObject
{
public:
void DoSomething()
{
// ...
}
};
CAtomicPtr<CMyObject> g_pMyObject;
void ThreadProc()
{
CMyObject* pObj = new CMyObject;
g_pMyObject = pObj;
// 等待其他线程执行完毕
// ...
// 使用 g_pMyObject 指向的对象进行操作
g_pMyObject->DoSomething();
// 释放对象
delete pObj;
g_pMyObject = NULL;
}
```
在上述示例中,我们定义了一个 CMyObject 类,并使用 CAtomicPtr<CMyObject> 定义了一个全局变量 g_pMyObject,它是一个原子指针,指向 CMyObject 类型的对象。
在 ThreadProc 函数中,我们创建了一个 CMyObject 对象,并将其赋值给 g_pMyObject。由于 g_pMyObject 是原子指针,因此这个赋值操作是线程安全的。
接着,我们等待其他线程执行完毕,然后使用 g_pMyObject 指向的对象进行操作。最后,我们释放对象并将 g_pMyObject 置为 NULL,以避免出现悬空指针。
需要注意的是,CAtomicPtr 只能保证指针本身的线程安全,而不能保证指针指向的对象的线程安全。因此,在使用 CAtomicPtr 时,需要确保指向的对象是线程安全的。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)