zoukankan      html  css  js  c++  java
  • #include <boost/weak_ptr.hpp>

    弱指针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 }
  • 相关阅读:
    202103226-1 编程作业
    7 20210516-1 团队作业3—需求分析规格说明书
    原型设计作业
    案例分析作业
    202103226-1 编程作业
    阅读——《构建之法》
    第一周学习任务
    牛客app测评报告
    wordcount编程
    准备工作
  • 原文地址:https://www.cnblogs.com/denggelin/p/5768791.html
Copyright © 2011-2022 走看看