We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 811209e commit fe689a8Copy full SHA for fe689a8
_posts/2024-10-01-现代C++语言核心特性解析.md
@@ -430,3 +430,11 @@ C++11引入nullptr,它能够隐式转换为各种指针类型,但无法隐
430
默认情况下自定义类型是不存在三项比较运算符函数的,需要用户显式默认声明`=default`。当std::weak_ordering和std::strong_ordering同时出现在基类和数据成员的类型中时,结果会是std::strong_ordering。类似的,std::partial_ordering会得到保留。std::common_comparison_category可以用于判断三向判断的结果。这三个类型只能与0相比较。
431
432
std::rel_ops可以在提供==和<运算符的情况下自动生成!=、>、<=和>=。C++20规定如果用户为自定义类型声明了三项比较运算符,那么编译器会自动生成<、>、<=、>=。三向比较也能够通过运算符<和==来自动生成。
433
+
434
+## 线程局部存储(C++11)
435
436
+之前操作系统支持系统线程局部存储。Windows:TlsAlloc,Linux:pthreads。
437
438
+C++11引入thread_local说明符,与static或extern结合声明内部或外部链接。可以解决多线程中错误码被覆盖的问题,从C++11之后,errno被修改为线程局部存储变量。
439
440
+线程局部存储只是定义了对象的生命周期,没有定义可访问性。在同一个线程中,一个线程局部存储对象只会初始化一次,即使在某个函数中被多次调用。
0 commit comments