当前位置: 首页 > news >正文

余姚哪里有做淘宝网站的企业网站的设计公司

余姚哪里有做淘宝网站的,企业网站的设计公司,西安搬家公司排名,教育直播平台网站建设费用重点: 1.引用计数在堆上(原本应为原子变量) 2.引用计数增加减少需要加锁保证线程安全。 3.内部实现Release函数用于释放资源 4.未实现,增加自定义删除器可以将Release修改为模板函数,传入可调用参数。对于shared_p…

重点:

1.引用计数在堆上(原本应为原子变量)

2.引用计数增加减少需要加锁保证线程安全。

3.内部实现Release函数用于释放资源

4.未实现,增加自定义删除器可以将Release修改为模板函数,传入可调用参数。对于shared_ptr,删除器应当作为构造函数参数传入。故而成员函数需要有std::function对象。

#ifndef SHARED_PTR_SHARED_PTR_H
#define SHARED_PTR_SHARED_PTR_H
#include <mutex>template<typename T>
class Shared_ptr{
public:Shared_ptr(T * row) :_row_ptr(row),_ref_count(new int(1)),_ref_mux(new std::mutex){}~Shared_ptr(){ release(); }//拷贝构造Shared_ptr(const Shared_ptr<T> &sp) :_row_ptr(sp._row_ptr),_ref_count(sp._ref_count),_ref_mux(sp._ref_mux){ add_ref(); }//拷贝赋值Shared_ptr<T>& operator=(const Shared_ptr<T> &sp){if (this->_row_ptr != sp._row_ptr){release();  //释放管理的旧资源_row_ptr = sp._row_ptr;_ref_count = sp._ref_count;_ref_mux = sp._ref_mux;add_ref();}return *this;}public:int& use_count(){ return *_ref_count; }T& operator*(){ return *_row_ptr; }T* operator->(){ return _row_ptr; }T* get(){ return _row_ptr; };void reset(T *sp){if (this->_row_ptr != sp){release();  //释放旧资源,减少引动计数_row_ptr = sp;_ref_count = new int(1);_ref_mux = new std::mutex;} elseadd_ref();}private:T *_row_ptr;int *_ref_count;std::mutex *_ref_mux;//减少引用计数或释放内存void release(){std::unique_lock<std::mutex> lock(*_ref_mux);if (--(*_ref_count) == 0){delete _row_ptr;delete _ref_count;_row_ptr = nullptr; //避免悬空指针_ref_count = nullptr;}}//保证线程安全的前提下加锁增加引用计数void add_ref(){std::unique_lock<std::mutex> lock(*_ref_mux);++(*_ref_count);}
};#endif //SHARED_PTR_SHARED_PTR_H

测试程序:

#include <iostream>
#include <string>
#include "Shared_ptr.h"int main() {Shared_ptr<std::string> ptr1(new std::string("hello"));Shared_ptr<std::string> ptr2(ptr1);std::cout << "ptr2 use_count = " << ptr2.use_count() << "ptr1 use_count = " << ptr1.use_count() << std::endl;Shared_ptr<std::string> ptr3 = ptr2;std::cout << "ptr3 use_count = " << ptr3.use_count() << std::endl;std::cout << *ptr2 << std::endl;auto str = new std::string("ni hao");ptr2.reset(str);std::cout << *ptr2 <<" ptr2 usecount = " << ptr2.use_count() << std::endl;std::cout << ptr1.use_count() << std::endl;return 0;
}

http://www.yayakq.cn/news/452234/

相关文章:

  • 做网站一般不选用的图片格式帮人代做静态网站多少钱
  • 做一个网站先做前段 还是后端哪个网站建设商招代理
  • 广州市开发区建设网站重庆网站公司
  • 定制网站开发报价单wordpress novelist
  • 旅游电子商务网站建设目的导视设计调研报告
  • 设计师必须知道的网站seo是谁
  • 郏县网站制作公司手机网站建设推广方案
  • 南山做网站公司哪家值得合作中国建设银行总部网站
  • 做网站商城怎么样黑龙江做网站的公司有哪些
  • 阿里云服务器 网站模板做方案收集图片的网站
  • 上海网站开发与设梧州论坛
  • 免费网站模板建设网站建设目标计划书
  • 信誉好的电商网站建设wordpress 随机重复
  • 安徽网站建设的基本步骤360优化大师官方最新
  • 网站推广的一般流程是河北搜索引擎推广价格
  • 在线做印章网站电商型网站建设价格
  • 怎么做网站的排名设计师国外网站
  • 沧州市任丘建设局网站门户网站系统建设方案
  • 做网站建设公司哪家好?保险网站建设的总体目标
  • 网站怎样做才能有点击率网站做地区定位跳转
  • 国内外基于vue框架的网站建设现状广西贵港建设集团有限公司网站
  • 政务门户网站建设信息wordpress分类模板
  • 找人做网站服务器不是自己的怎么办软件应用开发
  • 自己做海报的网站网站代码图片
  • seo怎么做整站排名wordpress调查插件
  • 哪些企业用wordpress建站如何自己做网站模版
  • 比较专业的建设网站的公司网站建设与管理综合实践
  • 响应式网站标准尺寸wordpress引导页
  • 商洛市建设工程造价管理站网站最新网页版传奇游戏
  • 图片网站收录wordpress页脚添加音乐