c++
文章平均质量分 70
gf00701
这个作者很懒,什么都没留下…
展开
-
c++模板特化
所谓模板特化是指在类前或是在函数前加 template<>,此时的“template<>”象征着既不是template也不是标准class,而是个特化的类或者函数template(模板),如下: template<> class A < classB > { //构造,析构,复制构造,赋值构造函数等 }; 在template实参是c...原创 2017-04-06 21:42:26 · 253 阅读 · 0 评论 -
Visual Studio 2013 配置Boost库。 如何编译和选择,遇到无法打开文件“libboost_thread-vc120-mt-gd-1_58.lib的解决办法
1.首先你需要去下载最新的boost,www.boost.org ,我下的1.58版本。 2.解压到文件夹,我解压到了E:\boost。 3.在开始菜单打开Visual Studio Tools,, 然后选择X86命令行提示。 4.到你所解压的目录下,运行boostrap.bat文件。 5.此时会生成一个名为bjam.exe的可执行文件,使用这个工具来编译boost库,VS2013要指定输原创 2017-05-24 21:44:08 · 2234 阅读 · 0 评论 -
c++并发初步学习(2)
在c++中,通过构造std::mutex的实例来创建互斥元,调用成员函数lock()来锁定他,调用unlock()来进行解锁。不过直接调用成员函数是不推荐的做法,因为这意味着你必须记住在每条可能离开函数(即线程)的代码路径上提供std::unlock(),包括由于异常所导致在内的。作为替代,c++提供了std::lock_guard类模板,实现了RAII惯用方法;它在构造函数时锁定互斥元,在析构是解原创 2017-06-12 18:41:22 · 240 阅读 · 0 评论 -
c++ unique_lock与lock_guard的区别
std::lock_guard是c++的模板类,定义如下: template class lock_guard lock_guard 对象通常用于管理某个锁(Lock)对象,因此与 Mutex RAII 相关,方便线程对互斥量上锁,即在某个 lock_guard 对象的声明周期内,它所管理的锁对象会一直保持上锁状态;而 lock_guard 的生命周期结束之后,它所管理的锁对象会被解锁。 模原创 2017-08-04 14:35:03 · 1460 阅读 · 0 评论 -
c++ 单例模式的几种实现
何为单例模式,在《设计模式》一书中,其定义如下:保证一个类仅有一个实例,并提供一个访问他的全局访问点。其思想也很简单,为了防止有多个实例的出现,所以必须在类内构造一个实例,并且将其构造函数访问权限标记为private或protected。最后,为了提供一个全局访问点,必须在类内构造一个共有static函数,返回在类内部唯一构造的实例,UML图如下: 代码实现: 实例一:class Singl原创 2017-08-06 15:28:27 · 602 阅读 · 0 评论 -
同步条件变量(1)————等待多次事件
在c++多线程中,我们学习了用各种方法去保护在线程间共享的数据,但有时我们不只是需要保护数据,还需要在独立的线程上进行同步操作。例如一个线程在完成其任务之前需要等待另一个线程完成任务,c++标准库便提供了以条件变量和期值为形式的工具来处理它。 考虑下面一种状况:如果一个线程正在等待第二个线程完成一项任务,他有几个选择? 首先,他可以一直检查共享数据(由互斥元保护)中的标识,并且让第二个线程在完成原创 2017-09-18 21:38:57 · 1011 阅读 · 0 评论