Skip to content

Commit 6e5e210

Browse files
committed
1. 修改第四章中“限时等待”的笔误
2. 为第五章增加个标题
1 parent 7f473b4 commit 6e5e210

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

md/04同步操作.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -755,13 +755,13 @@ std::shared_future<std::string>sf{ p.get_future() }; // 隐式转移所有权
755755
756756
## 限时等待
757757
758-
阻塞调用会将线程挂起一段(不确定的)时间,直到对应的事件发生。通常情况下,这样的方式很好,但是在一些情况下,需要限定线程等待的时间,因为无限期地等待事件发生可能会导致性能下降或资源浪费。简单来说,就是限定等待的时间,一个常见的例子是在很多网络库中的 `connect` 函数,这个函数调用是阻塞的,但是也是限时的,一定时间内没有连接到服务器就不会继续阻塞了,会进行其它处理,比如抛出异常。
758+
阻塞调用会将线程挂起一段(不确定的)时间,直到对应的事件发生。通常情况下,这样的方式很好,但是在一些情况下,需要限定线程等待的时间,因为无限期地等待事件发生可能会导致性能下降或资源浪费。一个常见的例子是在很多网络库中的 `connect` 函数,这个函数调用是阻塞的,但是也是限时的,一定时间内没有连接到服务器就不会继续阻塞了,会进行其它处理,比如抛出异常。
759759
760760
介绍两种指定超时的方式,一种是“**时间段**”,另一种是“**时间点**”,其实就是先前讲的 [`std::this::thread::sleep_for`](https://zh.cppreference.com/w/cpp/thread/sleep_for) 与 [`std::this_thread::sleep_until`](https://zh.cppreference.com/w/cpp/thread/sleep_until) 的区别。前者是需要指定等待一段时间(比如 10 毫秒)。而后者是指定等待到一个时间点(比如到 2024-05-07T12:01:10.123)。多数函数都对两种超时方式进行处理。**处理持续时间的函数以 `_for` 作为后缀,处理绝对时间的函数以 `_until` 作为后缀**。
761761
762762
条件变量 `std::condition_variable` 的等待函数,也有两个超时的版本 [`wait_for`](https://zh.cppreference.com/w/cpp/thread/condition_variable/wait_for) 和 [`wait_until`](https://zh.cppreference.com/w/cpp/thread/condition_variable/wait_until) 。它们和我们先前讲的 `wait` 成员函数一样有两个重载,可以选择是否传递一个[*谓词*](https://zh.cppreference.com/w/cpp/named_req/Predicate)。它们相比于 `wait` 多了一个解除阻塞的可能,即:**超过指定的时长或抵达指定的时间点**。
763763
764-
在讲述它的使用细节之前,我们还是要来先聊一下 C++ 中的[**时间库**](https://zh.cppreference.com/w/cpp/chrono#std::chrono_.E5.BA.93)(chrono),指定时间的方式,它较为麻烦。我们分:***时钟**(clock)*、***时间段**(time point)*、***时间点**(duration)*三个阶段稍微介绍一下。
764+
在讲述它的使用细节之前,我们还是要来先聊一下 C++ 中的[**时间库**](https://zh.cppreference.com/w/cpp/chrono#std::chrono_.E5.BA.93)(chrono),指定时间的方式,它较为麻烦。我们分:***时钟**(clock)*、***时间段**(duration)*、***时间点**(time point)*三个阶段稍微介绍一下。
765765
766766
### 时钟
767767

md/05内存模型与原子操作.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# 内存模型与原子操作

0 commit comments

Comments
 (0)