
C++
文章平均质量分 62
X-Programer
这个作者很懒,什么都没留下…
展开
-
libjingler-0.6.2在windows和ubuntu 10.04下的编译
Libjingle版本:0.6.2所需的资源: gtest-1.6.0.zip http://download.youkuaiyun.com/detail/cl_gamer/4847987 srtp-cvs.zip http://download.youkuaiyun.com/detail/q5707802/835原创 2015-01-13 20:18:13 · 1025 阅读 · 0 评论 -
学习C++的经典书籍
转载自:https://my.oschina.net/u/171160/blog/3054202C++ 是一门难学易用的语言!一旦学成,妙用无穷。相关书籍之多,人人都想找到一份学习的辟邪剑谱。在这里,由浅入深的罗列出C++的相关书籍,可以根据你的需要去选择自己需要的书籍。跟随本书单打好基础、开阔视野学好C++吧!根据个人经验,简单将这些书籍分成三类:入门、提高、拓展,建议按顺序...转载 2019-05-25 20:13:59 · 430 阅读 · 0 评论 -
sizeof(std::string), 到底是多少?
sizeof(std::string);又或者std::string str=""; sizeof(str);得到的结果到底是多少呢? 在使用VS2015的32位debug构建中,sizeof(std::string)返回28;在64位debug构建中,得到40;在32位release构建中,得到24,在64位release构建中,得到32。这是因为std::string的...原创 2018-12-06 19:08:46 · 4125 阅读 · 0 评论 -
C++ 中线程安全的对象生命期管理概要二
《Linux多线程服务端编程》的1.11节以对象池为例子讲解了shared_ptr技术与陷阱。假设有 Stock 类,代表一只股票的价格。每一只股票有一个惟一的字符串标识,比如 Google 的 key 是 "NASDAQ:GOOG",IBM 是 "NYSE:IBM"。Stock 对象是个主动对象,它能不断获取新价格。为了节省系统资源,同一个程序里边每一只出现的股票只有一个 Stock原创 2018-02-06 21:09:46 · 270 阅读 · 0 评论 -
C++ 中线程安全的对象生命期管理概要一
在这里,对《Linux多线程服务端编程》的第一章:线程安全的对象生命期管理的概要整理,这章的具体内容见陈硕的博客:http://blog.youkuaiyun.com/Solstice/article/details/5238671。如何避免对象析构时可能存在的竞态条件(race condition)是C++多线程编程面临的基本问题,可以借助shared_ptr和weak_ptr智能指针完美解决。原创 2018-02-06 21:01:48 · 607 阅读 · 0 评论 -
借shared_ptr实现copy-on-write (1)
在《Linux多线程服务端编程使用muduoC++网络库》2.8节说“借shared_ptr实现copy-on-write”。那么copy-on-write是怎样的技术? COW(Copy-On-Write)通过浅拷贝(shallow copy)只复制引用而避免复制值;当的确需要进行写入操作时,首先进行值拷贝,再对拷贝后的值执行写入操作,这样减少了无谓的复制耗时。 特点如下:原创 2018-02-05 16:45:20 · 967 阅读 · 0 评论 -
借shared_ptr实现copy-on-write(2)
转载自:http://blog.youkuaiyun.com/solstice/article/details/3351751借shared_ptr实现copy-on-write场景:一个多线程的C++程序,24h x 5.5d运行。有几个工作线程ThreadW{0,1,2,3},处理客户发过来的交易请求,另外有一个背景线程ThreadB,不定期更新程序内部的参考数据。这些线程都跟一个转载 2018-02-05 16:50:00 · 278 阅读 · 0 评论 -
C++之不完全类型
在muduo源代码中,会看到这样的代码:typedef char T_must_be_complete_type[sizeof(T) == 0 ? -1 : 1]; T_must_be_complete_type dummy; (void) dummy; 在C++中,类型有Complete type和Incomplete type之分,对于Complete type, 它的大小在编译原创 2018-02-04 18:00:15 · 568 阅读 · 1 评论 -
muduo库的BlockingQueue和BoundBlockingQueue类剖析
转载:http://blog.youkuaiyun.com/freeelinux/article/details/53428629一:无界阻塞队列muduo库的BlcokingQueue实际上用的生产这消费者模型。我们知道生产者消费者模型一般有两种实现方式,可以利用信号量也可以利用条件变量实现,muduo库采用条件变量实现。BlockingQueue比较简单,它是线转载 2018-02-04 15:12:48 · 323 阅读 · 0 评论 -
用C++实现单例模式4——C++11实现
1.static local Scott Meyer在《Effective C++》中提出了一种简洁的singleton写法。templateclass Singleton{public:static T& getInstance(){ static T value; return value;}private: Singleton()原创 2018-02-04 11:04:28 · 2800 阅读 · 0 评论 -
用C++实现单例模式3——如何在不使用锁和C++11的情况下,用C++实现线程安全的Singleton
如题所示,在这里主要讲的是,如何在不使用锁和C++11的情况下,用C++实现线程安全的Singleton。有四种方式来实现: 1.Atomic Singleton 2.UNIX平台下的pthread_once 3.static object 4.local static需要区原创 2018-02-04 10:56:11 · 1129 阅读 · 0 评论 -
用C++实现单例模式2——线程安全
上篇文章提及到单例的懒汉模式是线程不安全的,会产生race condition从而产生多次初始化的情况。要想在多线程下工作,最容易想到的就是用锁来保护共享变量了。下面是伪代码:templateclass Singleton{public:static T& getInstance(){{ MutexGuard guard(mutex_) // RAII if (原创 2018-02-04 10:42:06 · 292 阅读 · 0 评论 -
用C++实现单例模式1——懒汉模式和饿汉式
单例模式的定义: 保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。 那么我们就必须保证: 1.该类不能被复制。 2.该类不能被公开的创造。 那么对于C++来说,它的构造函数,拷贝构造函数和赋值函数都不能被公开调用。应用场景: 比原创 2018-02-04 10:08:29 · 8697 阅读 · 4 评论 -
muduo::StringPiece
muduo::StringPiece为什么要有这个StringPiece类? C++里面有string和char*,如果你用const string &s 做函数形参,可以同时兼容两种字符串。但当你传入一个很长的char * 时,char*转string,创建一个临时string对象,同时开辟一个内存空间,拷贝字符串, 开销比较大。如果你的目的仅仅是读取字符串的值,用这个StringPiece的话原创 2017-11-02 08:10:12 · 1452 阅读 · 1 评论 -
GetSystemTimeAsFileTime讲解
void WINAPI GetSystemTimeAsFileTime( Out LPFILETIME lpSystemTimeAsFileTime ); 这个函数获取到的是从1601年1月1日到目前经过的纳秒 ,保存到lpSystemTimeAsFileTime指向的FILETIME结构体, typedef struct _FILETIME {原创 2017-01-06 23:51:04 · 17716 阅读 · 3 评论 -
C/C++的电子书
转载自:https://my.oschina.net/u/171160/blog/3056040在《学习C++的经典书籍》这篇文章中,列出了C++的经典书籍:《C++ Primer 第 5 版》:中文版、英文版 《Effective C++》和《More Effective C++》 《Effective STL》 《C++ 标准程序库》:第一版、第二版 《STL 源码剖...转载 2019-05-30 17:19:12 · 1990 阅读 · 0 评论