需要的变量(variable)容器(container)只需要初始化一次,以容器(containter)为例子,可能只是需要向其中注入一次元素. C++11开始标准库提供了std::call_once()和std::once_flag的组合可以帮助我们做到这一点. 在多线程编程中,有一个常见 ...
一个偶然的机会,知道了std::once call这个东西。 了解了下,std::once call支持多线程情况下的某函数只执行一次。咦,这个不是恰好符合单例模式的多线程安全的困境吗 单例模式,经常需要手写的经典面试题之一,很考验面试者的底子和水平。需要考虑的细节很多,其中多线程安全也是一个点。 本篇博文再次总结下单例模式,并且尽可能详细与完整,建议mark,面试前再回忆下 毕竟工作中直接有代 ...
2019-10-10 15:31 0 477 推荐指数:
需要的变量(variable)容器(container)只需要初始化一次,以容器(containter)为例子,可能只是需要向其中注入一次元素. C++11开始标准库提供了std::call_once()和std::once_flag的组合可以帮助我们做到这一点. 在多线程编程中,有一个常见 ...
单例模式 单例模式,可以说设计模式中最常应用的一种模式了,据说也是面试官最喜欢的题目。但是如果没有学过设计模式的人,可能不会想到要去应用单例模式,面对单例模式适用的情况,可能会优先考虑使用全局或者静态变量的方式,这样比较简单,也是没学过设计模式的人所能想到的最简单的方式了。 一般情况下 ...
我会写关于c++11的一个系列的文章,会讲到如何使用c++11改进我们的程序,本次讲如何改进我们的模式,会讲到如何改进单例模式、观察者模式、访问者模式、工厂模式、命令模式等模式。通过c++11的改进,我们的模式变得更通用、更简洁、更强大。本次讲如何改进单例模式。 在c++11之前,我们写单例模式 ...
最近看代码,智能指针用的比较多,自己平时用的少,周末自己总结总结。方便后续使用。 std::shared_ptr大概总结有以下几点: (1) 智能指针主要的用途就是方便资源的管理,自动释放没有指针引用的资源。 (2) 使用引用计数来标识是否有多余指针指向该资源。(注意,shart_ptr ...
参考: C++11多线程-mutex(1) C++11多线程-mutex(2) C++11 并发指南三(std::mutex 详解) 前两篇博客应该就够了,第三篇作为例子的补充 我目前只看了第一篇的内容 ...
为什么C++11引入std::future和std::promise?C++11创建了线程以后,我们不能直接从thread.join()得到结果,必须定义一个变量,在线程执行时,对这个变量赋值,然后执行join(),过程相对繁琐。 thread库提供了future用来访问异步操作 ...
std::function是可调用对象的包装器,它最重要的功能是实现延时调用: 由上边代码定义std::function<int(int)> fr2,那么fr2就可以代表返回值和参数表相同的一类函数。可以看出fr2保存了指代的函数,可以在之后的程序过程中调用 ...
::bind在是C++11中的新特性。包含在#include <functional> 中。以前没有 ...