libco usage

libco 协程,被分类到非对称协程。分类的方法是: 对称协程(典型的如 golang 的 goroutine),一个协程 yield 后,执行机会不会直接返还到调用者,而是调度器来决定唤起哪个协程。 非对称协程(例如 libco ),一个协程 yield 后,会返还到调用者,继续执行调用者的函数。 非对称在于程序控制流转移到被调协程时使用的是 call/resume 操作,而当被调协程让出 CPU 时使用的却是 return/yield 操作。此外,协程间的地位也不对等,caller 与 callee 关系是确定的,不可更改的,非对称协程只能返回最初调用它的协程。 ...

2022-09-06 · 3 min · Chang Liu

cgroup usage

cgroup 全称是 control group,是 linux 下的一个内核模块,用来控制进程的系统资源使用。例如可以限制进程 cpu 使用量、内存使用量等。比如知名开源软件 docker 就是基于 cgroup 来限制容器资源使用,使用 namespace 隔离进程空间。 ...

2022-06-26 · 1 min · Chang Liu

Why Does Conv Need a Mutex

我们以 C++11 的 API 接口定义来描述 大家在编写多线程类的程序时,会用到信号量 condition_variable,有没有疑惑过为什么 cv 这类接口,在调用 wait/notify 时候还需要用一个 mutex。 为什么 cv.wait() 需要用 mutex 保护? 常见的 cv 代码实现类似下方,包含三个部分:检查条件是否满足;如果不满足等待到满足;等待到满足后执行逻辑。 ...

2022-06-23 · 1 min · Chang Liu