败犬日报 2025-03-24
败犬日报 2025-03-24
1. 三路运算符 <=> 的一些讨论
推荐阅读:
https://zhuanlan.zhihu.com/p/350867708
https://github.com/xiaoweiChen/CXX20-The-Complete-Guide 第一章
三路运算符解决了什么问题?
定义了 <=> 后 < <= > >= 这 4 个运算符就能用了,写起来简单。
为什么定义了 <=> 还要定义 ==?
性能考虑。例如字符串比较,== 只要长度不同就可以直接返回 false,而 <=> 还要区分大于小于。
如果 <=> 和 == 冲突了会怎么办?
不影响,因为 < <= > >= 由 <=> 引出,!= 由 == 引出,两者没有交集,只是行为会很奇怪。
但是使用了 std::sort 之类的标准库函数是未定义行为。
2. 主线程 core 了后,detach 的线程会寄吗
会。线程之间资源是共享的,一个线程 core 了所有资源都会不可控,所以整个进程都得寄。