Update item37.md

This commit is contained in:
猫耳堀川雷鼓 2021-03-15 20:59:34 +08:00 committed by GitHub
parent 8909979986
commit 91d728cd0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -104,7 +104,7 @@ private:
- 构造器只接受`std::thread`右值,因为我们想要把传来的`std::thread`对象移动进`ThreadRAII`。(`std::thread`不可以复制。)
- 构造器的参顺序设计的符合调用者直觉(首先传递`std::thread`,然后选择析构执行的动作,这比反过来更合理),但是成员初始化列表设计的匹配成员声明的顺序。将`std::thread`对象放在声明最后。在这个类中,这个顺序没什么特别之处,但是通常,可能一个数据成员的初始化依赖于另一个,因为`std::thread`对象可能会在初始化结束后就立即执行函数了,所以在最后声明是一个好习惯。这样就能保证一旦构造结束,在前面的所有数据成员都初始化完毕,可以供`std::thread`数据成员绑定的异步运行的线程安全使用。
- 构造器的参顺序设计的符合调用者直觉(首先传递`std::thread`,然后选择析构执行的动作,这比反过来更合理),但是成员初始化列表设计的匹配成员声明的顺序。将`std::thread`对象放在声明最后。在这个类中,这个顺序没什么特别之处,但是通常,可能一个数据成员的初始化依赖于另一个,因为`std::thread`对象可能会在初始化结束后就立即执行函数了,所以在最后声明是一个好习惯。这样就能保证一旦构造结束,在前面的所有数据成员都初始化完毕,可以供`std::thread`数据成员绑定的异步运行的线程安全使用。
- `ThreadRAII`提供了`get`函数访问内部的`std::thread`对象。这类似于标准智能指针提供的`get`函数,可以提供访问原始指针的入口。提供`get`函数避免了`ThreadRAII`复制完整`std::thread`接口的需要,也意味着`ThreadRAII`可以在需要`std::thread`对象的上下文环境中使用。