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

C++代码例如以下:

// ThreadingLoadImages.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <pthread.h>
#include <opencv2/opencv.hpp> #define THREADS 3 // Barrier variable
pthread_barrier_t barr; struct Param
{
cv::Mat img;
int index;
char* file_path;
} params[THREADS]; void* entry_point(void* arg)
{
Param* p = (Param*)arg; int index = p->index;
char* file_path = p->file_path; p->img = cv::imread(file_path); printf("The %d thread is doing job! \n", index); // Synchronization point
int rc = pthread_barrier_wait(&barr);
if (rc != 0 && rc != PTHREAD_BARRIER_SERIAL_THREAD)
{
printf("Could not wait on barrier\n");
exit(-1);
}
} int main()
{
pthread_t thr[THREADS];
//pthread_mutex_init(&g_mtx, NULL); // Barrier initialization
if (pthread_barrier_init(&barr, NULL, THREADS))
{
printf("Could not create a barrier\n");
return -1;
} //int t[THREADS];
params[0].file_path = "../micky.png";
params[1].file_path = "../umbrella.png";
params[2].file_path = "../beard.jpg"; for (int i = 0; i < THREADS; ++i)
{
//t[i] = i;
params[i].index = i; if (pthread_create(&thr[i], NULL, &entry_point, (void *)&params[i]))
{
printf("Could not create thread %d\n", i);
return -1;
}
} for (int i = 0; i < THREADS; ++i)
{
if (pthread_join(thr[i], NULL))
{
printf("Could not join thread %d\n", i);
return -1;
}
}
printf("All threads finish jobs! \n"); for(int i=0; i<THREADS; i++)
cv::imshow(params[i].file_path, params[i].img);
cv::waitKey(0); return 0;
}

效果如图:

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. python 全栈开发,Day142(flask标准目录结构, flask使用SQLAlchemy,flask离线脚本,flask多app应用,flask-script,flask-migrate,pipreqs)

    昨日内容回顾 1. 简述flask上下文管理 - threading.local - 偏函数 - 栈 2. 原生SQL和ORM有什么优缺点? 开发效率: ORM > 原生SQL 执行效率: 原生 ...

  2. 步步为营-35-SQL语言基础

    SQL 结构化查询语言(Structured Query Language) DDL DML DCL 在此不再对其进行详细解释 1 DDL 数据库定义语言 1.1 创建数据库脚本 --DDL crea ...

  3. Windows安装Nginx

    环境:Windows 10 Nginx :nginx-1.13.12 安装步骤: 1.下载Nginx 进入官方网站下载页面 https://nginx.org/en/download.html 可以看 ...

  4. java07接口与继承动手动脑

    1.源代码: package Work; class A{ public A(){ System.out.println("Class A."); } public A(Strin ...

  5. 【Java】 剑指offer(57-1) 和为s的两个数字

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它 ...

  6. 《Android进阶之光》--Dagger2

    No1: Project的build.gradle文件添加 buildscript{ dependencies{ ...classpath 'com.neenbedankt.gradle.plugin ...

  7. Loogn.OrmLite文档

    Getting Started 一. 引入Loogn.OrmLite PM> Install-Package Loogn.OrmLite 二.引入名称空间 using Loogn.OrmLite ...

  8. [译]javascript中的依赖注入

    前言 在上文介绍过控制反转之后,本来打算写篇文章介绍下控制反转的常见模式-依赖注入.在翻看资料的时候,发现了一篇好文Dependency injection in JavaScript,就不自己折腾了 ...

  9. mysql中的用法 count group by having

    1 语法: group by 字段 having 条件判断; group by的用法我已经在上一篇经验中介绍了 2 还是已员工绩效表为例   3 我们如果就是查询每个部门成绩大于89的员工数,可以这样 ...

  10. Linux虚拟机上安装redis

    1.检查安装依赖程序 yum install gcc-c++ yum install -y tcl yum install wget 2.获取安装文件 wget http://download.red ...