Skip to content
败犬日报 2025-11-01

败犬日报 2025-11-01

1. thrd_sleep 的参数为什么能精确到纳秒

参数精确到纳秒不代表实际 sleep 能精确到纳秒。cppref 里写了 "at least",只能确保至少 sleep 这个时间。实际上会很不精确,这涉及到操作系统调度以及硬件层面。

2. O(N) 原地合并两个有序数组

如果是 O(NlogN) 原地合并,只要堆排序就行了。如果还想要稳定(保持原有的顺序),cppref 就有记载。

O(N) 可以吗?还真可以(但是会失去稳定性),Practical In-Place Merging 这篇论文,以及这个源码。比较复杂,知道理论存在就好了。

3. Linux系统调用Hook:从内核机制到实际落地(文章)

https://mp.weixin.qq.com/s/xFjQvBDEuTGkzAw49PCWAQ

4. 异步任务怎么优雅地取消

一个库,提供了异步 task 接口,可以在主线程发起 start 和 cancel,在库内部的特定线程的任务队列执行 onFinish 回调。

是不是不可能保证 cancel 后 onFinish 回调必然不执行?因为主线程执行完 cancel 的时候,onFinish 回调可能已经塞入库内部的任务队列开始准备执行了。

最简单的办法是用标准里的 stop_token,cpp26 execution 的 cancel 也是利用它设计取消的。C++20 之前可以参考它的实现 https://github.com/llvm/llvm-project/blob/main/libcxx/include/__stop_token/stop_state.h

5. 访谈: Two Sigma数据工程实践(文章)

https://mp.weixin.qq.com/s/OlmvWpF_oDUIjBdzwIDT_Q