如何实现多线程间的参数传递?

更新于
2026-10-10 10:27:58
0阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2366个文字,预计阅读时间需要10分钟。

如何实现多线程间的参数传递?

目录

1.线程传参的过程

1.1 内置类型的实参

1.2 类型的实参

1.3 传递智能指针(unique_ptr)

1.线程传参的过程

下面是thread的源代码:

cpptemplateexplicit thread(Function f, Args&&... args){ m_joinable=true; m_thread=std::thread(std::forward(f), std::forward(args)...);}

目录
  • 1.线程传参的过程
    • 1.1 内置类型的实参
    • 1.2 类类型的实参
    • 1.3 传入智能指针unique_ptr

1.线程传参的过程

下面是thread的源代码

template< class Function, class... Args > explicit thread( Function&& f, Args&&... args );

源代码很复杂,反正我是看不懂。但是有一点可以确定,默认情况下实参都是按值传入产生一个副本到thread中(很多人可能都见过这句话,但可能不清楚具体细节,下面举例说明)

实参从主线程传递到子线程的线程函数中,需要经过两次传递。第1次发生在std::thread构造时,实参按值传递并以副本形式被保存到thread的tuple中,这一过程发生在主线程。

阅读全文

本文共计2366个文字,预计阅读时间需要10分钟。

如何实现多线程间的参数传递?

目录

1.线程传参的过程

1.1 内置类型的实参

1.2 类型的实参

1.3 传递智能指针(unique_ptr)

1.线程传参的过程

下面是thread的源代码:

cpptemplateexplicit thread(Function f, Args&&... args){ m_joinable=true; m_thread=std::thread(std::forward(f), std::forward(args)...);}

目录
  • 1.线程传参的过程
    • 1.1 内置类型的实参
    • 1.2 类类型的实参
    • 1.3 传入智能指针unique_ptr

1.线程传参的过程

下面是thread的源代码

template< class Function, class... Args > explicit thread( Function&& f, Args&&... args );

源代码很复杂,反正我是看不懂。但是有一点可以确定,默认情况下实参都是按值传入产生一个副本到thread中(很多人可能都见过这句话,但可能不清楚具体细节,下面举例说明)

实参从主线程传递到子线程的线程函数中,需要经过两次传递。第1次发生在std::thread构造时,实参按值传递并以副本形式被保存到thread的tuple中,这一过程发生在主线程。

阅读全文