mmxingye

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

随笔分类 -  C++ / C++并发编程

08 | 多线程异步操作
摘要:std::future C11 中增加的线程类,使得我们能够非常方便的创建和使用线程,但有时会有些不方便,比如需要获取线程返回的结果,就不能通过 join() 得到结果,只能通过一些额外手段获得,比如:定义一个全局变量,在子线程中赋值,在主线程中读这个变量的值,整个过程比较繁琐。C 提供的线程库中提 阅读全文

posted @ 2022-04-25 22:13 独立树 阅读(219) 评论(0) 推荐(0) 编辑

07 | 线程同步之原子变量
摘要:C++11 提供了一个原子类型 std::atomic,通过这个原子类型管理的内部变量就可以称之为原子变量,我们可以给原子类型指定 bool、char、int、long、指针等类型作为模板参数(不支持浮点类型和复合类型)。 由于原子操作是通过指令提供的支持,因此它的性能相比锁和消息传递会好很多。** 阅读全文

posted @ 2022-04-23 22:26 独立树 阅读(809) 评论(0) 推荐(0) 编辑

06 | C++ 线程同步之条件变量
摘要:条件变量是 C11 提供的另外一种用于等待的同步机制,它能阻塞一个或多个线程,直到收到另外一个线程发出的通知或者超时时,才会唤醒当前阻塞的线程。条件变量需要和互斥量配合起来使用,C11 提供了两种条件变量: condition_variable:需要配合 std::unique_lockstd::m 阅读全文

posted @ 2022-04-22 21:13 独立树 阅读(288) 评论(0) 推荐(0) 编辑

05 | C++ 线程同步之互斥锁
摘要:解决多线程数据混乱的方案就是进行线程同步,最常用的就是互斥锁,在 C++11 中一共提供了四种互斥锁: std::mutex:独占的互斥锁,不能递归使用 std::timed_mutex:带超时的独占互斥锁,不能递归使用 std::recursive_mutex:递归互斥锁,不带超时功能 std:: 阅读全文

posted @ 2022-04-22 20:36 独立树 阅读(199) 评论(0) 推荐(0) 编辑

04 | call_once
摘要:在某些特定情况下,**某些函数只能在多线程环境下调用一次,比如:要初始化某个对象,而这个对象只能被初始化一次,**就可以使用 std::call_once() 来保证函数在多线程环境下只能被调用一次。使用 call_once() 的时候,需要一个 once_flag 作为 call_once() 的 阅读全文

posted @ 2022-04-21 21:00 独立树 阅读(66) 评论(0) 推荐(0) 编辑

03 | this_thread命名空间
摘要:在 C++11 中不仅添加了线程类,还添加了一个关于线程的命名空间 std::this_thread,在这个命名空间中提供了四个公共的成员函数,通过这些成员函数就可以对当前线程进行相关的操作了。 get_id() 调用命名空间 std::this_thread 中的 get_id() 方法可以得到当 阅读全文

posted @ 2022-04-21 20:43 独立树 阅读(132) 评论(0) 推荐(0) 编辑

02 | C++ 线程的使用
摘要:C++11 中提供的线程类叫做 std::thread,基于这个类创建一个新的线程非常的简单,只需要提供线程函数或者函数对象即可,并且可以同时指定线程函数的参数。我们首先来了解一下这个类提供的一些常用 API: 构造函数 // ① thread() noexcept; // ② thread( th 阅读全文

posted @ 2022-04-21 20:29 独立树 阅读(550) 评论(0) 推荐(0) 编辑

01 | 处理日期和时间的 chrono 库
摘要:C++11 中提供了日期和时间相关的库 chrono,通过 chrono 库可以很方便地处理日期和时间,为程序的开发提供了便利。chrono 库主要包含三种类型的类:时间间隔duration、时钟clocks、时间点time point。 基本常识 1.时间点的来源:钟(c++的不同类) 2.时间点 阅读全文

posted @ 2022-04-21 19:59 独立树 阅读(1125) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示