Pthread barrier的简单使用演示样例:

C++代码例如以下:

  1. // ThreadingLoadImages.cpp : 定义控制台应用程序的入口点。
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <pthread.h>
  6. #include <opencv2/opencv.hpp>
  7.  
  8. #define THREADS 3
  9.  
  10. // Barrier variable
  11. pthread_barrier_t barr;
  12.  
  13. struct Param
  14. {
  15. cv::Mat img;
  16. int index;
  17. char* file_path;
  18. } params[THREADS];
  19.  
  20. void* entry_point(void* arg)
  21. {
  22. Param* p = (Param*)arg;
  23.  
  24. int index = p->index;
  25. char* file_path = p->file_path;
  26.  
  27. p->img = cv::imread(file_path);
  28.  
  29. printf("The %d thread is doing job! \n", index);
  30.  
  31. // Synchronization point
  32. int rc = pthread_barrier_wait(&barr);
  33. if (rc != 0 && rc != PTHREAD_BARRIER_SERIAL_THREAD)
  34. {
  35. printf("Could not wait on barrier\n");
  36. exit(-1);
  37. }
  38. }
  39.  
  40. int main()
  41. {
  42. pthread_t thr[THREADS];
  43. //pthread_mutex_init(&g_mtx, NULL);
  44.  
  45. // Barrier initialization
  46. if (pthread_barrier_init(&barr, NULL, THREADS))
  47. {
  48. printf("Could not create a barrier\n");
  49. return -1;
  50. }
  51.  
  52. //int t[THREADS];
  53. params[0].file_path = "../micky.png";
  54. params[1].file_path = "../umbrella.png";
  55. params[2].file_path = "../beard.jpg";
  56.  
  57. for (int i = 0; i < THREADS; ++i)
  58. {
  59. //t[i] = i;
  60. params[i].index = i;
  61.  
  62. if (pthread_create(&thr[i], NULL, &entry_point, (void *)&params[i]))
  63. {
  64. printf("Could not create thread %d\n", i);
  65. return -1;
  66. }
  67. }
  68.  
  69. for (int i = 0; i < THREADS; ++i)
  70. {
  71. if (pthread_join(thr[i], NULL))
  72. {
  73. printf("Could not join thread %d\n", i);
  74. return -1;
  75. }
  76. }
  77. printf("All threads finish jobs! \n");
  78.  
  79. for(int i=0; i<THREADS; i++)
  80. cv::imshow(params[i].file_path, params[i].img);
  81. cv::waitKey(0);
  82.  
  83. return 0;
  84. }

效果如图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

相关资料:pthread线程使用小结

多线程本地图片载入演示样例【OpenCV】【Pthread】的更多相关文章

  1. Android利用Volley异步载入数据完整具体演示样例(二)

    MainActivity例如以下: package cc.y; import android.app.Activity; import android.content.Context; import ...

  2. OpenCV LDA(Linnear Discriminant analysis)类的使用---OpenCV LDA演示样例

    1.OpenCV中LDA类的声明 //contrib.hpp class CV_EXPORTS LDA { public: // Initializes a LDA with num_componen ...

  3. Android之——多线程下载演示样例

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46883927 一.概述 说到Android中的文件下载.Android API中明 ...

  4. Java多线程演示样例(模拟通话,sleep,join,yield,wait,notify,Semaphore)

    主线程等待子线程的多种方法 synchronized浅析 sleep 是静态方法,Thread.sleep(xx)谁调用谁睡眠. join 是合并方法.当前线程调用其它线程xx.join()则等到xx ...

  5. 通过Canvas及File API缩放并上传图片完整演示样例

    创建一个只管的用户界面,并同意你控制图片的大小.上传到server端的数据,并不须要处理enctype为 multi-part/form-data 的情况.只一个简单的POST表单处理程序就能够了. ...

  6. Eureka 的 Application Service client的注冊以及执行演示样例

            Eureka 服务器架起来了(关于架设步骤參考博客<Linux 下 Eureka 服务器的部署>),如今怎样把我们要负载均衡的服务器(也就是从 Application Cl ...

  7. Cocos2d-x 3.2 Lua演示样例 AssetsManagerTest(资源管理器)

    Cocos2d-x 3.2 Lua演示样例 AssetsManagerTest(资源管理器) 本篇博客介绍Cocos2d-x 为我们提供的一个类--AssetsManager在Lua中的使用样例,效果 ...

  8. Android模糊演示样例-RenderScript-附效果图与代码

    本文链接    http://blog.csdn.net/xiaodongrush/article/details/31031411 參考链接    Android高级模糊技术    http://s ...

  9. 使用Dropzone上传图片及回显演示样例

    一.图片上传所涉及到的问题 1.HTML页面中引入这么一段代码 <div class="row"> <div class="col-md-12" ...

随机推荐

  1. gitlab的docker安装,非标准端口,如何处理?

    这个问题的定义是: 如果我们不是用的80端口对外提供服务, 但gitlab的docker容器里的nginx却是80端口, 那么,在我们clone代码时,带的Http地址也会是80端口,这显然会出现问题 ...

  2. 跨域资源共享CORS

    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing).它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而 ...

  3. AOJ 2249 Road Construction (dijkstra)

    某国王需要修路,王国有一个首都和多个城市,需要修路.已经有修路计划了,但是修路费用太高. 为了减少修路费用,国王决定从计划中去掉一些路,但是需要满足一下两点: 保证所有城市都能连通 所有城市到首都的最 ...

  4. php用json_encode中文问题

    echo json_encode($arr,JSON_UNESCAPED_UNICODE); 用这个中文就不会被转码了

  5. h5的图片预览

    h5的图片预览是个好东西,不需要保存到后台就能预览图片 代码也很短 <!DOCTYPE html> <html> <head> <meta charset=& ...

  6. Centos 6.5安装mysql

    转载自:https://www.cnblogs.com/leffss/p/8512773.html 一.安装前准备 安装采用二进制包方式,软件包5.7.19版本下载地址:https://dev.mys ...

  7. Python库资源大全

    转载地址:https://zhuanlan.zhihu.com/p/27350980 本文是一个精心设计的Python框架.库.软件和资源列表,是一个Awesome XXX系列的资源整理,由BigQu ...

  8. 谷歌浏览器升级引起的BUG

    问题描述:在谷歌浏览器中,电脑打开A系统,添加附件时无法弹框. 预期结果:添加附件,可以打开弹框. 问题分析:谷歌浏览器自动升级,自55.0.2883.75后发布的新版本均自动停用Flash插件. 解 ...

  9. centOS7升级git版本到2.7.3

    CentOS 自带的git版本太低,需要升级到2.1.2版本以上才能使用gitea. 升级方法: 1.安装所需软件包 yum install curl-devel expat-devel gettex ...

  10. Codeforces.833B.The Bakery(线段树 DP)

    题目链接 \(Description\) 有n个数,将其分为k段,每段的值为这一段的总共数字种类,问最大总值是多少 \(Solution\) DP,用\(f[i][j]\)表示当前在i 分成了j份(第 ...