2022年4月27日
摘要: 非类的成员函数以及成员变量 inline修饰的函数或变量(c++17开始可以修饰变量)在全局保留一份; static修饰的函数或者变量会在各自的编译单元都保留一份; static函数的局部static变量也会有多份,inline函数的static变量只有一份; static inline 修饰的函数 阅读全文
posted @ 2022-04-27 21:06 独立树 阅读(3518) 评论(0) 推荐(0)
摘要: 为什么要使用并发编程? 在本世纪初之前,大部分开发人员不常需要关心并发编程;用到的时候,也多半只是在单处理器上执行一些后台任务而已。只有少数为昂贵的工作站或服务器进行开发的程序员,才会需要为并发性能而烦恼。原因无他,程序员们享受着摩尔定律带来的免费性能提升,而高速的 Intel 单 CPU 是性价比 阅读全文
posted @ 2022-04-27 21:04 独立树 阅读(569) 评论(0) 推荐(0)
  2022年4月25日
摘要: std::future C11 中增加的线程类,使得我们能够非常方便的创建和使用线程,但有时会有些不方便,比如需要获取线程返回的结果,就不能通过 join() 得到结果,只能通过一些额外手段获得,比如:定义一个全局变量,在子线程中赋值,在主线程中读这个变量的值,整个过程比较繁琐。C 提供的线程库中提 阅读全文
posted @ 2022-04-25 22:13 独立树 阅读(257) 评论(0) 推荐(0)
摘要: 目的 读出类似这样的配置文件 abc:abc 并且对文件进行一个简单的加密操作 注意的点 配置信息结构体key和value要自己设定,这不是在python中 对于C语言中动态内存分配记得要提供“一个返回有效行数的函数” config.h #include <stdio.h> #include <st 阅读全文
posted @ 2022-04-25 09:32 独立树 阅读(168) 评论(0) 推荐(0)
  2022年4月24日
摘要: 对齐模数的查看和修改 #pragma pack(show) 我们加入这样一条预编译指令,进行编译后即可查看当前的对齐模数 warning C4810: 杂注 pack(show) 的值 == 8 #pragma pack(4) 我们也可以执行这样的一条指令来修改当前的对齐模数 结构体内存对齐规则 从 阅读全文
posted @ 2022-04-24 20:19 独立树 阅读(469) 评论(0) 推荐(1)
  2022年4月23日
摘要: C++11 提供了一个原子类型 std::atomic,通过这个原子类型管理的内部变量就可以称之为原子变量,我们可以给原子类型指定 bool、char、int、long、指针等类型作为模板参数(不支持浮点类型和复合类型)。 由于原子操作是通过指令提供的支持,因此它的性能相比锁和消息传递会好很多。** 阅读全文
posted @ 2022-04-23 22:26 独立树 阅读(923) 评论(0) 推荐(0)
  2022年4月22日
摘要: 条件变量是 C11 提供的另外一种用于等待的同步机制,它能阻塞一个或多个线程,直到收到另外一个线程发出的通知或者超时时,才会唤醒当前阻塞的线程。条件变量需要和互斥量配合起来使用,C11 提供了两种条件变量: condition_variable:需要配合 std::unique_lockstd::m 阅读全文
posted @ 2022-04-22 21:13 独立树 阅读(334) 评论(0) 推荐(0)
摘要: 解决多线程数据混乱的方案就是进行线程同步,最常用的就是互斥锁,在 C++11 中一共提供了四种互斥锁: std::mutex:独占的互斥锁,不能递归使用 std::timed_mutex:带超时的独占互斥锁,不能递归使用 std::recursive_mutex:递归互斥锁,不带超时功能 std:: 阅读全文
posted @ 2022-04-22 20:36 独立树 阅读(253) 评论(0) 推荐(0)
  2022年4月21日
摘要: 在某些特定情况下,**某些函数只能在多线程环境下调用一次,比如:要初始化某个对象,而这个对象只能被初始化一次,**就可以使用 std::call_once() 来保证函数在多线程环境下只能被调用一次。使用 call_once() 的时候,需要一个 once_flag 作为 call_once() 的 阅读全文
posted @ 2022-04-21 21:00 独立树 阅读(80) 评论(0) 推荐(0)
摘要: 在 C++11 中不仅添加了线程类,还添加了一个关于线程的命名空间 std::this_thread,在这个命名空间中提供了四个公共的成员函数,通过这些成员函数就可以对当前线程进行相关的操作了。 get_id() 调用命名空间 std::this_thread 中的 get_id() 方法可以得到当 阅读全文
posted @ 2022-04-21 20:43 独立树 阅读(158) 评论(0) 推荐(0)