C++多线程,线程函数传参显示没有重载函数接受4个参数
先说解决办法:
线程函数传参是和bind一样,需要加std::ref 以显式的引用。
以下是错误的传递方式:
vector<thread> threads1;
threads1.reserve(THREAD_NUMBER);
for (int i = 0; i < THREAD_NUMBER; ++i) {threads1.emplace_back(thread(saveImg, mtx1, cv1,1));}void saveImg(static mutex &mtx, condition_variable& cv, int i) {unique_lock<mutex> lck(mtx);while (true) {cv.wait(lck);cout << "GG" << i << endl;}
}
这里给线程函数传一个锁,一个条件变量,一个int。就算在线程函数这里加了&表明引用也是不行的。必须要在实例线程的时候加std::ref。
以下是正确方式:
vector<thread> threads1;
threads1.reserve(THREAD_NUMBER);
for (int i = 0; i < THREAD_NUMBER; ++i) {threads1.emplace_back(thread(saveImg, std::ref(mtx1), std::ref(cv1),1));}void saveImg(static mutex &mtx, condition_variable& cv, int i) {unique_lock<mutex> lck(mtx);while (true) {cv.wait(lck);cout << "GG" << i << endl;}
}
核心修改部分:
thread(saveImg, mtx1, cv1,1)
修改为:
thread(saveImg, std::ref(mtx1), std::ref(cv1),1)
C++多线程,线程函数传参显示没有重载函数接受4个参数相关推荐
- python 线程函数传参
python 线程函数传参 from threading import Thread from time import sleep#含有参数的分支线程函数 def fun(sec,name):prin ...
- C++ CreateThread 线程函数传参
HANDLE WINAPICreateThread(_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, // 内核对象的安全属性,一般传入NULL _ ...
- 函数传参string_JavaScript 高阶函数入门浅析
原文:https://www.freecodecamp.org/news/a-quick-intro-to-higher-order-functions-in-javascript-1a014f89c ...
- 【嵌入式Linux应用开发】温湿度监控系统——多线程与温湿度的获取显示
1. 概述 在前几篇的文章中,我们已经学习了LVGL界面绘制以及paho mqtt的同步客户端和异步客户端的操作,那么本篇就会综合前面的知识,加上Linux系统的多线程以及线程间通信的知识,将LV ...
- python笔记之强制函数以关键字参数传参
最近学习python,学到了函数传参,看到了以下这个特殊情况,特此来做个笔记 def add(*, x, y): print(x, y) 以上函数定义后,该怎么传参?前面的那个*号是做什么用的? 我们 ...
- java如何实现不固定个数传参
CreateTime--2017年9月15日14:42:40 Author:Marydon java如何实现不固定个数传参(定义实参个数可变的方法) 参考链接:原文链接 传统方法:为这个方法定义一个数 ...
- x64汇编第三讲,64位调用约定与函数传参.
目录 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 二丶x64汇编 2.1汇编详解 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 在x86下我们汇编的传参如下: ...
- android电视设置hdmi输出,利用HDMI线实现多屏显示的设置方法!
原标题:利用HDMI线实现多屏显示的设置方法! 利用HDMI线实现多屏显示的设置方法!下面从2个方面进行说明,具体的由HDMI线厂家怡万达电子为你分析介绍. 1.HDMI线接电视设置方法,如何设置多屏 ...
- C++函数传参int a,int *a,int a,const int a的区别
C++函数传参int a,int &a,const int &a的区别 # 传参方式 作用 int a 值传递 无法改变a的值 int *a 地址传递 ...
最新文章
- Java关键字synchronized详解
- 【原创】推荐广告入门:DeepCTR-Torch,基于深度学习的CTR预测算法库
- Mac 录制视频,并转为GIF格式
- python 压缩 解压
- 特别策划:视频会议协作平台的机会与技术挑战
- Minimizing Difference CodeForces - 1244E(贪心题)
- 对当前目录及子目录下的所有源码文件及Makefile打包
- [洛谷P3807]【模板】卢卡斯定理
- 【数据结构和算法笔记】数组(数组的储存方式和特殊矩阵的压缩储存)
- 利用 TypeConverter,转换字符串和各种类型只需写一个函数
- WCF服务编程-非WCF应用程序使用WCF服务
- chrome 下载东西 失败禁止_如何修复最常见的Google Chrome下载错误
- 解决W5500,DHCP获取IP地址失败的问题,移植官方例程需要特别注意!!!
- 计算机网络安全 填空题,计算机网络安全技术选择填空复习题
- node获取系统字体
- 蒙特卡洛算法及简单应用
- [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.4
- HMI-48-【多媒体】Title界面实现 3
- 入门图形学:屏幕波爆特效
- 选型笔记之二极管选型