败犬日报 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 了所有资源都会不可控,所以整个进程都得寄。