Skip to content

Commit

Permalink
1. 修改 第二章 std::jthread 一节中有关线程停止和 pthread_cancel 的对比描述
Browse files Browse the repository at this point in the history
2. 修改第四章“C++20信号量”一节中内容,强调 `acquire`、`release` 是原子的减少与增加计数
#12
  • Loading branch information
Mq-b committed Jun 1, 2024
1 parent 920f1ae commit f12fa72
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion md/02使用线程.md
Original file line number Diff line number Diff line change
Expand Up @@ -899,7 +899,7 @@ stop_source _Ssource;
首先要明确,C++ 的 `std::jthread` 提供的线程停止功能并不同于常见的 POSIX 函数 [`pthread_cancel`](https://pubs.opengroup.org/onlinepubs/9699919799/)`pthread_cancel` 是一种发送取消请求的函数,但并不是强制性的线程终止方式。目标线程的可取消性状态和类型决定了取消何时生效。当取消被执行时,进行清理和终止线程[^2]
`std::jthread` 所谓的线程停止只是一种基于用户代码的控制机制,而不是一种强制性的线程终止。使用 `std::stop_source`[`std::stop_token`](https://zh.cppreference.com/w/cpp/thread/stop_token) 提供了一种优雅地请求线程停止的方式,**但实际上停止的决定和实现都由用户代码来完成**
`std::jthread` 所谓的线程停止只是一种**基于用户代码的控制机制**,而不是一种与操作系统系统有关系的线程终止。使用 `std::stop_source`[`std::stop_token`](https://zh.cppreference.com/w/cpp/thread/stop_token) 提供了一种优雅地请求线程停止的方式,**但实际上停止的决定和实现都由用户代码来完成**
```cpp
using namespace std::literals::chrono_literals;
Expand Down
2 changes: 1 addition & 1 deletion md/04同步操作.md
Original file line number Diff line number Diff line change
Expand Up @@ -1171,7 +1171,7 @@ int main() {
[主] 获得信号
```

[`acquire`](https://zh.cppreference.com/w/cpp/thread/counting_semaphore/acquire) 函数就是我们先前说的“*等待*”(减少计数),`release` 函数就是"释放"(增加计数)。
[`acquire`](https://zh.cppreference.com/w/cpp/thread/counting_semaphore/acquire) 函数就是我们先前说的“*等待*”(**原子**地减少计数),[`release`](https://zh.cppreference.com/w/cpp/thread/counting_semaphore/release) 函数就是"释放"(**原子**地增加计数)。

---

Expand Down

0 comments on commit f12fa72

Please sign in to comment.