《Folly库代码赏析》8):IO

2022-10-04
阅读 1 分钟
1.6k
IOBuf类似于linux中的sk_buf,是一个网络编程中的常见概念,用一个物理上的非连续空间虚拟出逻辑上的连续空间,同时利用引用计数避免拷贝复制。

《Folly库代码赏析》7):Executor

2022-10-03
阅读 1 分钟
2.4k
Folly 的余下内容分为[ ] synchronization[ ] memory[ ] logging[ ] io[ ] gen[ ] fibers[ ] executors[ ] concurrency {代码...} ExecutorKeepAlive是对Executor的安全引用,Executor析构时会join所有KeepAlive对象。ThreadExecutor对于每个task启动一个线程执行,通过channel通知任务添加、删除、结束。golang中的sele...

《Folly库代码赏析》5):Future/Promise模型

2022-10-02
阅读 3 分钟
3.5k
通常来说,有两种异步模式,一种是基于goroutine的用户态协程并发模型,另一种是基于Future/Promise的并发模型。后者能够将多个Future串联,改善回调地狱这一情况。其实Javascript早就提供了Promise模型,异步基于事件循环来做,每次都是将异步事件插入时间序列等待下一次调用。而像C++/Rust这些语言就必须通过额外的exe...

《Folly库代码赏析》4):BenchMark

2022-10-01
阅读 2 分钟
1.5k
BenchMark框架基于这样一种思想:测量时候一定有噪声的存在,导致我们的测量值偏大。因此不应该对多组测量结果求平均,而是应该求最小值。第一个有趣的地方是如何确保一个无用的表达式求值,Folly中是利用了句号表达式 + 匿名变量 {代码...} 宏展开之后,就完成了函数的声明和并将测试函数注入框架。第二个有意思的地方...

《Folly库代码赏析》3):AtomicUnorderedMap

2022-09-30
阅读 2 分钟
868
AtomicUnorderedMap是一个不支持删除、支持高并发读写、支持自定义K、V的哈希表,只支持一个findOrConstruct操作。

《Folly库代码赏析》1):AtomicHashArray

2022-09-30
阅读 1 分钟
1.8k
AtomicHashArray是用于构建AtomicHashMap的原料,在某些条件上面做了额外要求,通过降低通用性达到提高特定条件下性能的目的。

《Folly库代码赏析》2):AtomicHashMap

2022-09-30
阅读 1 分钟
1.5k
为了避免昂贵操作,如通过stringpiece查找string,AtomicHashMap提供了转换函数允许提供可转换位key的查询参数,即使不是同一类型,也可以比较二者是否相等。