如何实现多线程间的参数传递?
- 内容介绍
- 文章标签
- 相关推荐
本文共计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中,这一过程发生在主线程。

