聊聊std::tie
tie既能用来解包有又能用来赋值。这是怎么做到的 1. 例子 template< class... Types > tuple<Types&...> tie( Types&... args ) noexcept; 直接看例子 比较自定义结构体 #include <string> #include <tuple>...
tie既能用来解包有又能用来赋值。这是怎么做到的 1. 例子 template< class... Types > tuple<Types&...> tie( Types&... args ) noexcept; 直接看例子 比较自定义结构体 #include <string> #include <tuple>...
这里主要看下WritableFile下的细节,这里只有四个方法 virtual Status Append(const Slice& data) = 0; virtual Status Close() = 0; virtual Status Flush() = 0; virtual Status Sync() = 0; appendfile和writable file都是一类f...
RandomAccessFile 是一个抽象基类,定义随机读取文件的接口。它声明了一个纯虚函数 Read,强制子类实现这个方法。 只读的话,是支持多线程并发访问的,逐步看下实现 Status NewRandomAccessFile(const std::string& f, RandomAccessFile** r) ove...
Linux kernel中有哪些奇技淫巧? Ftrace, perf, and the tracing ABI Static Keys Jump label
leveldb file io env.h中抽象出了一些文件io的接口,针对这些抽象的接口,同时也抽象出了文件的抽象类,比如 SequentialFile RandomAccessFile WritableFile SequentialFile文件io接口 重要的接口就2个 // Read up to "n" bytes from the file. "scrat...
一文讲清多线程和多线程同步 cpu cache slides 链接、装载与库 — 动态链接 这一坨写的都挺不错的链接装载与库 The LD_DEBUG environment variable 轻踩一下就崩溃吗——踩内存案例分析 实战总结|抽丝剥茧,记一次神奇的崩溃 When __cxa_pure_virtual is ju...
简单看下cross compile要做哪些东西,从一个gn的例子开始。 config("compiler_cpu_abi") { cflags = [] cflags_c = [] cflags_cc = [] ldflags = [] defines = [] if (is_linux) { # CPU architecture. We may or m...
在leveldb里发现了一段代码 // Wraps an instance whose destructor is never called. // // This is intended for use with function-level static variables. template <typename InstanceType> class NoDestruct...
看了下业界的eventloop实现,大多数的思路都是one thread per loop,然后在fd增加之类的,大多数都是在回调事件里,会跟wait同时进行 比较骚的是,我看大家打断epoll_wait都用的是event fd read来触发 我在想这个是不是在某些场景下其实会影响并发的性能。。。 我浅看了一下muduo的实现是这样的,但workflow的实现看起来又是另外一套。 ...
1 muduo 同步日志的话,在一些文件写入很慢的设备上,可能导致出现一些性能问题,你也可能常见到这种同步日志突然出现日志丢了10s多的情况。所以现代的日志库一般都支持async logging的方式 可能业界很多log都用的spdlog,但是muduo的实现确实非常的简单,而且也是支持异步的,基本可以看作是一个工程化能用的最简单logging。这玩意只支持写文件,不像spd那样有很多的...