码迷,mamicode.com
首页 > 其他好文 > 详细

#include <boost/weak_ptr.hpp>

时间:2016-08-13 21:09:50      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

 

弱指针boost::weak_ptr的定义在boost/weak_ptr.hpp里。到目前为止介绍的各种智能指针都能在不同的场合下独立使用。相反,弱指针只有在配合共享指针一起使用时才有意义。因此弱指针被看作是共享指针的观察者,用来观察共享指针的使用情况。当用到共享指针时,就要考虑是否需要使用弱指针了,这样可以解除一些环形依赖问题。

 

 1 #include <iostream>
 2 #include <windows.h>
 3 #include <boost/weak_ptr.hpp>
 4 
 5 DWORD WINAPI reset(LPVOID p)//typedef unsigned long       DWORD;
 6 {
 7     boost::shared_ptr<int>*sh = static_cast<boost::shared_ptr<int>*>(p);
 8     sh->reset();//指针重置
 9     return 0;
10 }
11 
12 DWORD WINAPI print(LPVOID p)//typedef unsigned long       DWORD;
13 {
14     boost::weak_ptr<int>*pw = static_cast<boost::weak_ptr<int>*>(p);
15     boost::shared_ptr<int>sh = pw->lock();//锁定不可以释放
16     if (sh)
17     {
18         std::cout << *sh << std::endl;
19     }
20     else
21     {
22         std::cout << "指针已经被释放" << std::endl;
23     }
24     return 0;
25 }
26 
27 void main()
28 {
29     boost::shared_ptr<int>sh(new int(99));
30     boost::weak_ptr<int>pw(sh);
31 
32     HANDLE threads[2];
33 
34     threads[1] = CreateThread(0, 0, print, &pw, 0, 0);//创建一个线程
35 
36     Sleep(1000);
37 
38     threads[0] = CreateThread(0, 0, reset, &sh, 0, 0);//创建一个线程
39 
40     WaitForMultipleObjects(2, threads, TRUE, INFINITE);//等待线程结束
41 }

 

#include <boost/weak_ptr.hpp>

标签:

原文地址:http://www.cnblogs.com/denggelin/p/5768791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!