如何实现C语言中多线程传递长尾词参数的方法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2345个文字,预计阅读时间需要10分钟。
目录 + 1. 线程传参的过程 + 1.1 内置类型的实参 + 1.2 类型的实参 + 1.3 传递智能指针unique_ptr + 1. 线程传参的过程 + 下面是thread的源代码 + template class Function, class... Args explicit thread(Function f, Args... 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中,这一过程发生在主线程。
本文共计2345个文字,预计阅读时间需要10分钟。
目录 + 1. 线程传参的过程 + 1.1 内置类型的实参 + 1.2 类型的实参 + 1.3 传递智能指针unique_ptr + 1. 线程传参的过程 + 下面是thread的源代码 + template class Function, class... Args explicit thread(Function f, Args... 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中,这一过程发生在主线程。

