- 博客(5)
- 资源 (9)
- 收藏
- 关注
原创 C++11保护共享数据的其他方法
保护共享数据的初始化过程在多线程编程中,互斥量是最通用的保护共享数据的机制。但是在某些情况下,一些资源仅需要在第一次初始化的时候需要保护,其时候就可以不需要互斥变量的保护了。比如编码中最常见的单例模式,核心代码如下://(3)获得本类实例的唯一全局访问点static CSinglton* GetInstance(){ //若实例不存在,则创建实例对象 if (NULL ==...
2019-04-27 17:44:00 682
原创 C++11使用互斥量保护共享数据
C++中通过实例化std::mutex创建互斥量,通过调用成员函数lock()进行上锁,unlock()进行解锁。不过,不推荐实践中直接去调用成员函数,因为调用成员函数就意味着,必须记住在每个函数出口都要去调用unlock(),也包括异常的情况。C++标准库为互斥量提供了一个RAII语法的模板类std::lock_guard,其会在构造的时候提供已锁的互斥量,并在析构的时候进行解锁,从而保证了一个...
2019-04-27 00:38:34 2476
原创 C++11中线程所有权转移分析
移动特性说明C++标准库中有很多资源占有(resource-owning)类型,比如std::ifstream,std::unique_ptr还有std::thread都是可移动,但不可拷贝。移动拷贝或者移动赋值都使得原有对象对所属资源的控制权发生转移,从对象A转移到对象B,对资源的控制只在对象B中保留。以下是std::thread线程类的移动特性的声明,支持移动构造和移动对象,但不可拷贝。...
2019-04-21 00:52:59 1749
原创 C++11向线程函数传递参数
template< class Function, class... Args > explicit thread( Function&& f, Args&&... args );这个是std::thread构造函数之一,其中f是可调用对象,args是传递给f的参数。默认传递给f的是按值复制,若需要传递引用参数给线程函数,则必须包装它(例如用 s...
2019-04-20 17:26:05 9231 6
原创 C++11线程管理基础
1. 启动线程在C++ 11中线程是在std::thread对象创建时启动。因为我们把启动线程的重心放在如何构造这个thread对象,其构造函数有以下几个://仅仅是构造一个线程类,但没有和具体化的线程函数关联thread() noexcept;// 移动构造函数thread( thread&& other ) noexcept;//构造新的 std::thread 对...
2019-04-20 14:32:27 888
C/C++/JAVA/Python代码统计工具
2018-12-17
基于boost.asio库的C++http/https web server
2018-07-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人