From fad8e600bc8f18ac25fec3249ef08ce93d061ede Mon Sep 17 00:00:00 2001 From: "A. Jiang" Date: Sat, 4 May 2024 13:47:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E5=AF=B9=20Github=20?= =?UTF-8?q?=E5=A4=96=E9=83=A8=E4=BB=93=E5=BA=93=E7=9A=84=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=89=87=E6=AE=B5=E4=BD=BF=E7=94=A8=E6=B0=B8=E4=B9=85=E9=93=BE?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "md/03\345\205\261\344\272\253\346\225\260\346\215\256.md" | 2 +- ...\270\216\346\272\220\347\240\201\350\247\243\346\236\220.md" | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git "a/md/03\345\205\261\344\272\253\346\225\260\346\215\256.md" "b/md/03\345\205\261\344\272\253\346\225\260\346\215\256.md" index 40001ce5..fc316332 100644 --- "a/md/03\345\205\261\344\272\253\346\225\260\346\215\256.md" +++ "b/md/03\345\205\261\344\272\253\346\225\260\346\215\256.md" @@ -542,7 +542,7 @@ void _Validate() const { // check if the mutex can be locked } ``` -满足第二个 if,因为 `_Owns` 为 `true` 所以抛出异常,别的标准库也都有[类似设计](https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/unique_lock.h#L141-L144)。很诡异的设计对吧,正常。除非我们写成: +满足第二个 if,因为 `_Owns` 为 `true` 所以抛出异常,别的标准库也都有[类似设计](https://github.com/gcc-mirror/gcc/blob/3e3d115c946944c81d8231dfbe778d4dae26cbb7/libstdc%2B%2B-v3/include/bits/unique_lock.h#L141-L144)。很诡异的设计对吧,正常。除非我们写成: ```cpp lock.mutex()->lock(); diff --git "a/md/\350\257\246\347\273\206\345\210\206\346\236\220/01thread\347\232\204\346\236\204\351\200\240\344\270\216\346\272\220\347\240\201\350\247\243\346\236\220.md" "b/md/\350\257\246\347\273\206\345\210\206\346\236\220/01thread\347\232\204\346\236\204\351\200\240\344\270\216\346\272\220\347\240\201\350\247\243\346\236\220.md" index 4851a146..068dd2a5 100644 --- "a/md/\350\257\246\347\273\206\345\210\206\346\236\220/01thread\347\232\204\346\236\204\351\200\240\344\270\216\346\272\220\347\240\201\350\247\243\346\236\220.md" +++ "b/md/\350\257\246\347\273\206\345\210\206\346\236\220/01thread\347\232\204\346\236\204\351\200\240\344\270\216\346\272\220\347\240\201\350\247\243\346\236\220.md" @@ -154,7 +154,7 @@ void _Start(_Fn&& _Fx, _Args&&... _Ax) { ## 总结 -需要注意,libstdc++ 和 libc++ 可能不同,就比如它们 64 位环境下 `sizeof(std::thread)` 的结果就可能是 **8**。libstdc++ 的实现只[保有一个 `std::thread::id`](https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/std_thread.h#L123)。[参见](https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/std_thread.h#L81-L85)。不过实测 gcc 不管是 `win32` 还是 `POSIX` 线程模型,线程对象的大小都是 8,宏 `_GLIBCXX_HAS_GTHREADS` 的值都为 1([GThread](https://docs.gtk.org/glib/struct.Thread.html))。 +需要注意,libstdc++ 和 libc++ 可能不同,就比如它们 64 位环境下 `sizeof(std::thread)` 的结果就可能是 **8**。libstdc++ 的实现只[保有一个 `std::thread::id`](https://github.com/gcc-mirror/gcc/blob/3e3d115c946944c81d8231dfbe778d4dae26cbb7/libstdc%2B%2B-v3/include/bits/std_thread.h#L123)。[参见](https://github.com/gcc-mirror/gcc/blob/3e3d115c946944c81d8231dfbe778d4dae26cbb7/libstdc%2B%2B-v3/include/bits/std_thread.h#L81-L85)。不过实测 gcc 不管是 `win32` 还是 `POSIX` 线程模型,线程对象的大小都是 8,宏 `_GLIBCXX_HAS_GTHREADS` 的值都为 1([GThread](https://docs.gtk.org/glib/struct.Thread.html))。 > ```cpp > class thread