mmxingye

导航

2022年4月25日 #

08 | 多线程异步操作

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

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

06 | C语言模拟配置文件的读取和加解密

摘要: 目的 读出类似这样的配置文件 abc:abc 并且对文件进行一个简单的加密操作 注意的点 配置信息结构体key和value要自己设定,这不是在python中 对于C语言中动态内存分配记得要提供“一个返回有效行数的函数” config.h #include <stdio.h> #include <st 阅读全文

posted @ 2022-04-25 09:32 独立树 阅读(147) 评论(0) 推荐(0) 编辑

2022年4月24日 #

05 | C语言结构体大小和偏移量

摘要: 对齐模数的查看和修改 #pragma pack(show) 我们加入这样一条预编译指令,进行编译后即可查看当前的对齐模数 warning C4810: 杂注 pack(show) 的值 == 8 #pragma pack(4) 我们也可以执行这样的一条指令来修改当前的对齐模数 结构体内存对齐规则 从 阅读全文

posted @ 2022-04-24 20:19 独立树 阅读(410) 评论(0) 推荐(1) 编辑

2022年4月23日 #

07 | 线程同步之原子变量

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

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

2022年4月22日 #

06 | C++ 线程同步之条件变量

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

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

05 | C++ 线程同步之互斥锁

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

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

2022年4月21日 #

04 | call_once

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

posted @ 2022-04-21 21:00 独立树 阅读(65) 评论(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 独立树 阅读(548) 评论(0) 推荐(0) 编辑

01 | 处理日期和时间的 chrono 库

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

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