Skip to content

Commit 17c79ba

Browse files
committed
修改第二第三第四章开头与结尾部分内容,先前增加内容忘记改了
1 parent a810f7b commit 17c79ba

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

md/02使用线程.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# 使用线程
22

3-
在标准 C++ 中,[`std::thread`](https://zh.cppreference.com/w/cpp/thread/thread) 可以指代线程,使用线程也就是使用 `std::thread` 类。
3+
在标准 C++ 中,[`std::thread`](https://zh.cppreference.com/w/cpp/thread/thread) 可以指代线程,本章中,使用线程也就是代表使用 `std::thread` (C++20 `std::jthread`)。
4+
5+
本章围绕着它们来讲解。
46

57
## Hello World
68

@@ -982,8 +984,8 @@ _NODISCARD_CTOR_JTHREAD explicit jthread(_Fn&& _Fx, _Args&&... _Ax) {
982984
983985
## 总结
984986
985-
本章节的内容围绕着:“使用线程”,也就是"**使用 `std::thread`**"展开, `std::thread` 是我们学习 C++ 并发支持库的重中之重,本章的内容在市面上并不少见,但是却是少有的准确与完善。即使你早已学习乃至使用 C++ 标准库进行多线程编程,我相信本章也一定可以让你收获良多。
987+
本章节的内容围绕着:“使用线程”,也就是"**使用 `std::thread`**"展开, `std::thread` 是我们学习 C++ 并发支持库的重中之重,在最后谈起了 C++20 引入的 `std::jthread` ,它的使用与概念也非常的简单。本章的内容在市面上并不算少见,但是却是少有的**准确与完善**。即使你早已学习乃至使用 C++ 标准库进行多线程编程,我相信本章也一定可以让你收获良多。
986988
987-
如果是第一次学习本章的内容,能会有一些难以理解的地方。建议你多思考、多记忆,并在以后反复查看和实践。
989+
并且如果是第一次学习本章的内容,能会有一些难以理解的地方。建议你多思考、多记忆,并在以后反复查看和实践。
988990
989991
我尽量以简单通俗的方式进行讲解。学完本章后,你可能还无法在实际环境利用多线程提升程序效率,至少还需要学习到使用互斥量来保护共享数据,才能实际应用多线程编程。

md/03共享数据.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
- 保护共享数据的其它方案
1010

11+
- 有关线程安全的其它问题
12+
1113
在上一章内容,我们对于线程的基本使用和管理,可以说已经比较了解了,甚至深入阅读了部分的 `std::thread` 源码。所以如果你好好学习了上一章,本章也完全不用担心。
1214

1315
我们本章,就要开始聊共享数据的那些事。

md/04同步操作.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@
1010

1111
- 在规定时间内等待
1212

13-
本章将讨论如何使用条件变量等待事件,介绍 future 等标准库设施用作同步操作。
13+
- Qt 实现异步任务的示例
14+
15+
- 其它 C++20 同步设施:信号两、闩与屏障
16+
17+
本章将讨论如何使用条件变量等待事件,介绍 future 等标准库设施用作同步操作,使用Qt+CMake 构建一个项目展示多线程的必要性,介绍 C++20 引入的新的同步设施。
1418

1519
## 等待事件或条件
1620

@@ -1476,6 +1480,6 @@ int main(){
14761480

14771481
## 总结
14781482

1479-
在并发编程中,同步操作对于并发编程至关重要。如果没有同步,线程基本上就是独立的,因其任务之间的相关性,才可作为一个整体执行(比如第二章的并行求和)。本章讨论了多种用于同步操作的工具,包括条件变量、future、promise、package_task、信号量。同时,详细介绍了 C++ 时间库的知识,以使用并发支持库中的“限时等待”。还使用 CMake + Qt 构建了一个带有 UI 界面的示例,展示异步多线程的**必要性**
1483+
在并发编程中,同步操作对于并发编程至关重要。如果没有同步,线程基本上就是独立的,因其任务之间的相关性,才可作为一个整体执行(比如第二章的并行求和)。本章讨论了多种用于同步操作的工具,包括条件变量、future、promise、package_task、信号量。同时,详细介绍了 C++ 时间库的知识,以使用并发支持库中的“限时等待”。还使用 CMake + Qt 构建了一个带有 UI 界面的示例,展示异步**多线程的必要性**。最后介绍了 C++20 引入的两种新的并发设施,信号量、闩与屏障
14801484

14811485
在讨论了 C++ 中的高级工具之后,现在让我们来看看底层工具:C++ 内存模型与原子操作。

0 commit comments

Comments
 (0)