首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vector<thread>与vector<thread *>的差异

vector<thread>与vector<thread *>的差异
EN

Stack Overflow用户
提问于 2021-03-24 10:09:06
回答 3查看 71关注 0票数 0

关于C++中线程的问题

使用一种或另一种的优点和缺点是什么?

代码语言:javascript
复制
vector<thread> tvec;
...

代码语言:javascript
复制
vector<thread*> tvec; // or vector<shared_ptr<thread>> tvec;
...
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-24 10:19:37

std::thread是一个很小的类,主要包含线程ID或句柄。它也是可移动的,因此是一个很好的候选存储在一个vector的价值。

因此,按值存储它们是最简单和最易读的,因为它是vector<thread> tvec;

此外,表单vector<T*>包含不拥有的语义,因此可能与您想要的不同。

票数 3
EN

Stack Overflow用户

发布于 2021-03-24 10:15:29

让我们将它们称为值和指针版本:

  1. --值版本将具有更好的缓存本地性以便于顺序访问。如果线程是std::线程,那么它是可移动的,否则复制构造就更昂贵了。

  1. 指针版本意味着您总是追逐一个指针来访问它。页面错误是昂贵的。如果元素是可选的/缺失的,可以将条目设置为nullptr。如果您使用这样的直接指针,您可能需要手动管理资源。这是错误剪枝,导致资源泄漏(在本例中是线程和内存)。
票数 0
EN

Stack Overflow用户

发布于 2021-03-24 10:19:25

vector<thread>vector<thread *>中的差异

我猜想vector,你指的是std::vectorthread,你指的是std::thread。如果我想错了,就纠正我。

首先是包含thread对象的向量。另一个是包含thread*对象的向量,这些对象是指向thread的指针。

使用一个或另一个的优点和缺点是什么?

vector<thread>的优点是可以获得thread对象。vector<thread>的缺点是没有thread*对象。

vector<thread *>的优点是可以获得thread*对象。vector<thread *>的缺点是没有thread对象。

当您想启动多个线程进行并行编程时,vector<thread>非常有用。

我还没有遇到vector<thread *>有用的用例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66778801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档