jemalloc 介绍及编译步骤本文直接略过,仅记录一下C++程序如何接入jemalloc,以及如何确认jemalloc已载入。注:jemalloc是非侵入式的,目标程序无需依赖jemalloc库,只需要在目标
jemalloc 介绍及编译步骤本文直接略过,仅记录一下C++程序如何接入jemalloc,以及如何确认jemalloc已载入。注:jemalloc是非侵入式的,目标程序无需依赖jemalloc库,只需要在目标
C++ SpinLock 自旋锁的代码实现(全网最简略的方式)
1、最简单的一种,来自《C++并发编程实战》第5章 C++内存模型和原子类型操作: include <iostream> include <atomic> include <thread> include <vector> include <unistd h
【解决】undefined reference to 'apr_thread_rwlock_destory'、undefined reference to 'apr_initialize'
1、首选确认安装了apr及apr-util否则报错<apr-1 apr_xxx h>头文件找不到。2、-lapr-1 -laprutil-1添加库链接,否则报错:undefined reference to & 39;apr_thread_rwlock_de
使用MVCC可以解决。轻量级的不使用MVCC的话,思路如下:核心ObjPtrmap<id, ObjPtr> map_;Get的时候返回最新的ObjPtr;当ObjPtr有新版本要更新的时候,将map中对应id的ObjPtr中is
C++ 打开文件,以清空覆盖的方式,代码如下:std::unique_ptr<ostream> stream = std::make_unique<fstream>("xxx", ios::trunc | ios::out | ios::in);*stream << "co
原子vector的一种实现源码(atomic-vector)
来自Facebook的一种实现,源码如下: * +----------------------------------------------------------------------+ | HipHop for PHP
C++ Lock-free Hazard Pointer(冒险指针)
1 Safe Reclamation MethodsFolly 的 Hazard Pointer 实现中有一段注释,详细描述了 C++ 里几种主流的安全内存回收方法,列表如下:优点缺点场景Locking易用读高开销
原因就是CPU不支持相应的指令集导致的。Linux上使用 lscpu 命令查看CPU指令集,看是否支持。比如_mm256_cmpeq_epi64 这个函数需要avx2指令集,但是CPU不支持,就导致程序崩溃起不来。
最近在使用CPU指令集优化代码的时候,编译出错,报错如下: usr lib64 gcc x86_64-suse-linux 7 include avx2intrin h:252:1: error: inlining failed in call to always_i
【解决】This is allowed only when policy CMP0079 is set to NEW.
cmake最低版本设置为3 13以上,可解决。cmake_minimum_required(VERSION 3 13) can fix the first problem 参考:https: gitlab kitware com cmake cmake - issues 19693
编译llvm时,报错:CMake Error at CMakeLists txt:729 (find_package): By not providing "FindPython3 cmake" in CMAKE_MODULE_PATH this project has asked
C、C++混合编译时,C头文件不加 extern "C",函数按照C++编译会改变函数名称,导致link时报undefined reference to `xxx` 的 错误。加 extern "C" 解决,但是直接加的话
【解决】double free or corruption (!prev)
*** glibc detected *** cupd: double free or corruption (!prev): 0x093b1208 ***可能原因:1、多次释放同一内存区,需要检查代码,是否出现了对同一内存区释放两
【解决】munmap_chunk(): invalid pointer
原因:new malloc出来的指针被覆盖掉了,然后delete free就会报这个错误。例如:char* word = (char*)malloc(10);word = "abc"; 应使用 strcpy(word, "abc");free(word)