随笔分类 - C++工程实践
C++并发编程系列-:数据竞态(data race)
摘要:1.定义 在多线程编程中,当两个或多个线程并发访问同一个内存位置时,如果没有适当的同步机制(如锁或原子操作),并且至少有一个访问是写操作,就会发生数据竞争。这可能会导致不可预测的行为、崩溃或错误的结果。
阅读全文
使用lambda表达式代替std::bind和std::function
摘要:原来 bool Myclass::connect() { std::function<void()>f = std::bind(&Myclass::loopCheckStatus, this); new std::thread(f); return true; } void Myclass::loo
阅读全文
Ubuntu20.04下GCC编译器使用asan须知
摘要:背景 只在CFLAGS和CXXFLAGS加-fsanitize=address是不够的,会编译失败,报出一堆undefined reference to __asan_report_XXX这样的报错,例如 undefined reference to __asan_report_load1 各种各种
阅读全文
Ubuntu20.04使用apt安装以boost库为基础的C/C++开发环境
摘要:1.开启了x11功能的mobaxterm(mobaXterm默认开启了,其他的终端可能还要设置开启)上安装一些必要依赖 sudo apt install libxext6 libxrender1 libxtst6 libxi6 libfreetype6 -y sudo apt install fon
阅读全文
centos或者ubuntu操作系统升级gcc
摘要:不要通过编译源码的形式升级! 可以参考此文:https://mp.weixin.qq.com/s/bD4KIV7YQOrZO9iP5tkscQ
阅读全文
使用docker打造多种C++编译环境
摘要:参考资料 1.https://segmentfault.com/q/1010000022466832 “这个例子放在多个镜像里,然后用docker-compose来管理,一次性启动就行 docker-compose.yml” 2.https://faun.pub/c-development-envi
阅读全文
boost解析多节点的、复杂的XML文件的常用代码范式
摘要:std::string parseBond(std::string& fileName) { boost::property_tree::ptree ptree_root; try { boost::property_tree::read_xml(fileName, ptree_root); } c
阅读全文
C++获取毫秒时间戳的方法
摘要:c++ std::chrono::milliseconds TimeUtils::CurrentTimeMillis() { return std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::system_clock
阅读全文
通过改用C API接口创建目录而大幅提升print modules性能
摘要:之前在为海量信号(1400w根信号)数据写入磁盘而创建目录时,使用的是在C语言中调用system("mkdir -p 目录名")这种方式的,结果导致整个打印输出到文件的时间时间比较长,达到36min36s; 在研究代码后,改用C自身自带的mkdir()函数,直接提高了创建目录的效率,最后整个打印输出
阅读全文
转载:C++的单例模式
摘要:原文已经写得很棒了: 原文链接:https://www.cnblogs.com/zxh1210603696/p/4157294.html
阅读全文
一个充分利用了C++11和C++14特性的动物农场实现代码片段
摘要:直接结合代码讲解: //先在工厂使用前注册标签和创建功能 Factory<CreateAnimal> farm; farm.subscribe("CAT", [](const std::string & n) { return std::make_unique<Cat>(n); });///< st
阅读全文