当前位置: 首页 > news >正文

C++ 多线程使用

使用多线程思考

  1. 若程序中存在耗时操作,且耗时操作数据不与其他发生交互,如下载数据,那么直接进行线程操作即可。
  2. 如果耗时操作需要进行数据交互,而且耗时操作能分成并行的两部分或多部分,那么也可以进行多线程进行加速(不能分成两部分并行,可以尝试改变业务逻辑是否能拆成并行).

人脸跟踪多线程使用

  1. 若跟踪逻辑为先检测人脸,再根据人脸检测结果进行模板匹配,那么是串行结构,无法并行。
  2. 若是将检测人脸和模板匹配结果进行分离,然后将模板匹配结果与人脸检测框进行IOU计算,那么就可以进行并行拆分。

人脸跟踪并行代码

std::thread thread1(tracking_corrfilter, frame,templ,ref(first_rect),2);
std::thread thread2(&UltraFace::detect, &face,frame,ref(face_list));

thread1.join();
thread2.join();
  1. 对于函数内部修改的变量要使用ref,否则会报错: error: no type named ‘type’ in ‘struct std::__invoke_resul
  2. 对于使用别的类的方法,要使用&符号,&UltraFace::detect是类以及方法名字, &face是类的实例变量。
  3. 对于使用当前文件中方法,第一个为方法名字如tracking_corrfilter,后续为方法的参数。

相关文章:

  • Java学习之路 —— IO、特殊文件
  • SpringBoot请求参数与响应返回值,ResponseEntity<T>自定义响应
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • Postman+Newman+Jenkins实现接口测试持续集成
  • C#中.NET 7.0 Windows窗体应用通过EF访问新建数据库
  • Java NIO 详解
  • 蓝牙耳机仓设计的单芯片解决方案
  • C++中tuple数据结构使用
  • 编译中的 CMP0148 警告
  • 基于STC12C5A60S2系列1T 8051单片机的数模芯片DAC0832实现数模转换应用
  • Python---函数的作用,定义,使用步骤(调用步骤)
  • 《C++避坑神器·二十二》VS能正常运行程序,但运行exe程序无响应解决办法
  • Spring条件注解@Conditoinal+ Profile环境切换应用@Profile
  • SQL之开窗函数
  • Git常用操作-MD
  • 基于pytest-bdd的项目目录结构和命名规范
  • Jmeter 性能测试基础!
  • Vertx-EventBus篇
  • 如何通过数据治理来提升业务价值——业务场景治理
  • AI视频检索丨历史视频标签化,助力重要事件高效溯源
  • 上海“城市文明开放麦”全城总动员,樊振东担任首位上海城市文明大使
  • 特朗普中东行:“能源换科技”背后的权力博弈|907编辑部
  • 缅甸内观冥想的历史漂流:从心理治疗室到“非语言现场”
  • 以军向也门3个港口的居民发布撤离令
  • GDP逼近五千亿,向海图强,对接京津,沧州剑指沿海经济强市
  • 习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式