并行程序设计 pthread

news2024/9/27 18:54:20

配置环境

pthread是c的扩展库,需要配置环境,不过vscode的mingw里面本来就有,谢谢呢^_^

cd “d:\sylvia\文件夹等等等” ;
if ($?) { g++ helloworld.cpp -o helloworld } ; //编译
if ($?) { .\helloworld 线程数} //运行

常用变量声明及函数

my_rank 当前线程序号,局部变量
thread_count 总线程数,全部变量

从命令行读取线程数

thread_count = strtol(argv[1], NULL, 10);

strtol函数: 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型)

long strtol (
const char* number_p /* in -- 要转换为长整数的字符串。*/,
char** end_p /* out 对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一个字符。*/,
int base /* in  必须介于 2 和 36(包含)之间,或者是特殊值 0。*/ );

用long很奇怪,但这个库里大部分变量类型都是long,但是long long也行,long好像还报错??

启动线程

pthread_t是线程对象的数据类型,一般pthread_t* thread_handles来创建一个变长的线程对象数组,然后new分配长度,然后用pthread_create(&thread_handles[thread], NULL, Hello, (void*)thread);来创建线程
pthread_create是创建线程的API

int pthread_create (
pthread_t* thread_p /*out 要创建的线程*/ ,
const pthread_attr_t* attr_p /* in 不知道 */ ,
void* (*start_routine ) ( void* ) /* in 线程函数? */ ,
void* arg_p /* in  不知道*/ ) ;

线程函数

void* thread_function( void* args_p );

合并(停止)线程

int pthread_join (
pthread_t thread /*in */ ,
void** ret_val_p /* out */ ) 

Hello World

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int thread_count;
void* Hello(void* rank){
	long long my_rank = (long long)rank;
	printf("Hello from thread %ld of %d\n", my_rank, thread_count);
	return NULL;
}

int main(int argc, char* argv[]) {
	long long thread;
	pthread_t* thread_handles; //线程对象,可变数组
	thread_count = strtol(argv[1], NULL, 10);//从命令行读取线程数
	thread_handles = new pthread_t[thread_count];//分配长度
	
	for(thread = 0; thread < thread_count; thread++){
		pthread_create(&thread_handles[thread], NULL, Hello, (void*)thread);
	}
		
	printf("Hello from the main thread\n");
	for(thread = 0; thread < thread_count; thread++)
		pthread_join(thread_handles[thread], NULL);//合并线程
		
	free(thread_handles);
	return 0;
}


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/737942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三雄极光“设计有光·亚洲设计师迪拜对话”逐光之旅圆满收官

7月8日&#xff0c;三雄极光照明学院“设计有光亚洲设计师迪拜对话”游学旅程圆满收官。过去两周内&#xff0c;此次活动备受关注&#xff0c;设计大咖纷纷为此次迪拜游学一带一路逐光之旅打call。出发前&#xff0c;启动礼于三雄极光总部隆重举行&#xff0c;总裁张宇涛出席并…

F - Desktop Rearrangement

大意: 给你一个桌面状态,每次俩种操作桌面可以表示为一个大小为nm的矩形矩阵&#xff0c;由字符.&#xff08;桌面上的空单元格&#xff09;和*&#xff08;一个图标&#xff09;组成。 操作: 输入<x,y>表示改变其状态的单元格的位置&#xff08;如果该单元格以前包含…

如何在.NET 自动安装包项目(Visual Studio Installer Projects)中设置安装包自动安装 .NET Framework环境

如何在.NET 自动安装包项目(Visual Studio Installer Projects)中设置安装包自动安装 .NET Framework环境 前言 ​ Microsoft Visual Studio Installer Projects是一组用于创建安装程序的工具&#xff0c;它是Microsoft Visual Studio的扩展。这些工具允许开发人员在Visual St…

Java开发基础系列(二):数据类型

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; Java开发基础系列(二):数据类型 ⏱️ 创作时间&#xff1a; 2023年07月…

生产消费者模型

生产消费者模型概念 生产消费者模型实际上就是通过一个容器&#xff0c;将生产者和消费者之间的强耦合问题解决掉。 没有使用生产者消费者模型时&#xff0c;生产者和消费者之间直接相互联通&#xff0c;两者之间强耦合&#xff0c;若是一方更换&#xff0c;那另一方也需要随之…

在 Jetpack Compose 中使用 ViewPager

简介 Jetpack Compose 是一个现代化的&#xff0c;声明式的 UI 工具包&#xff0c;让我们可以更方便地构建原生 Android UI。在本篇文章中&#xff0c;我们将会讨论如何在 Jetpack Compose 中使用 ViewPager。 什么是 ViewPager? ViewPager 是一个提供左右滑动切换视图的 U…

DynaSLAM代码详解(2) — Mask RCNN物体检测框架

目录 2.1 前言 2.2 Mask R-CNN优点 2.3 Mask R-CNN框架解析 (1) Mask R-CNN算法步骤 (2) Faster-R-CNN (3) FCN (4) ROIPooling和ROIAlign的分析与比较 (5) Mask R-CNN损失 参考链接&#xff1a; &#xff08;1&#xff09;Mask R-CNN网络详解_fcn太阳花的小绿豆_太…

Java开发专家阿里P6-P7面试题大全及答案汇总(持续更新)二十七、Ribbon和Feign的区别...

一、CPU100%问题如何快速定位 答案 1.执行top -c &#xff0c;显示进程运行信息列表 键入P (大写p)&#xff0c;进程按照CPU使用率排序 2.找到最耗CPU的线程 top -Hp 10765 &#xff0c;显示一个进程的线程运行信息列表 键入P (大写p)&#xff0c;线程按照CPU使用率排序 …

IDEA集成Maven

目录 配置Maven环境 创建Maven项目 Maven坐标 导入Maven项目 Maven依赖管理&#xff08;核心&#xff09; 配置Maven环境 两种方法 每没创建一个maven项目都需要在项目中配置一遍在所有设置中进行全局设置&#xff0c;适用于所有的maven项目 步骤 在idea的初始界面中找到所…

ASEMI整流桥2W10的结构特点和应用领域

编辑-Z 整流桥2W10是一种常用的电子元件&#xff0c;用于将交流电转换为直流电。本文将从工作原理、结构特点、应用领域和发展趋势四个方面对整流桥2W10进行详细阐述。 工作原理 整流桥2W10是由四个二极管组成的桥式整流电路。当输入的交流电信号通过整流桥时&#xff0c;根据…

文心大模型3.5完成内测

据报道&#xff0c;日前&#xff0c;百度文心大模型3.5版本已经完成内测应用&#xff0c;并在三大公开测试集上展现了出色的表现&#xff0c;其综合能力评测得分已经超过ChatGPT&#xff0c;部分中文能力甚至超越了GPT-4。 根据《中国科学报》的报道&#xff0c;3月份&#xf…

2023年全球零信任现状报告发布丨面临集成挑战,如何突破知易行难?

近日&#xff0c;专注网络与安全融合的全球网络安全领导者Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;宣布发布《2023年全球零信任现状报告》及其调查发现。该报告揭示了零信任安全当前部署和实施现状&#xff0c;以及 IT 团队在应对后疫情时代的混合办公模式的安…

还找不到好用的UI设计工具,来看这篇

即时设计是一个基于云的在线协作工具&#xff0c;专门为国产设计团队打造。与其它在线协作工具相比&#xff0c;即时设计具有更强的项目团队合作功能&#xff0c;也更容易实现上手操作。它可以帮助企业或团队从0到1的创建、测试和交付的设计项目。在即时设计的帮助下&#xff0…

更快地分割任何事物:面向移动应用的轻量级Sam

文章目录 摘要1、简介2、相关工作3、适合移动设备的SAM3.1、背景和项目目标3.2、提出方法 4、实验4.1、实验设置4.2、MobileSAM的性能与原版SAM相当4.3、MobileSAM优于FastSAM 5、结论 摘要 https://arxiv.org/pdf/2306.14289v2.pdf 分割任何事物模型(SAM)因其令人印象深刻的零…

健身器材BS EN ISO 20957标准

健身器材出口欧洲需要符合CE认证的 BS EN ISO 20957标准&#xff0c;而且 BS EN ISO 20957规定了固定训练设备的安全要求和试验方法&#xff0c;也就是固定训练设备在使用过程中的一般安全要求。这包括用于体育协会&#xff0c;教育机构&#xff0c;酒店&#xff0c;体育馆&…

Lazada官方运营服务商分享;店铺没流量?优化好标题是关键

一.商品标题简介 Q:商品标题是什么&#xff1f; A:商家上传商品时&#xff0c;填写的标题&#xff0c;会展示在PDP页面上端 Q:为什么商品标题很重要&#xff1f; A:商品标题可根据买家搜索的关键字来将商品呈现在搜索结果中&#xff0c;因此&#xff0c;需要在商品标题中尽…

欧科云链联合大湾区警方共话区块链安全

为了应对日益严峻的区块链衍生犯罪&#xff0c;日前欧科云链联合粤港澳大湾区警务人员在深圳开展了为期一天的三地警务研讨会&#xff0c;期间获得包括香港商报、澳门日报、澳门法治报、澳门商报、香港雅虎财经等多家港澳权威媒体的报道&#xff0c;引发三地警务机关的高度关注…

ceph故障解决

今天一早发现ceph集群出错&#xff0c;根据报错&#xff0c;可以判断出是时间不同步和一个存储池没有起来导致的 一、解决时间同步 1.1检查时间同步的ntp服务是否启动&#xff08;发现有两台服务器的ntp服务关闭了&#xff09; systemctl status ntp1.2 重启ntp服务(重启服…

超详细AI二维码制作教程:手把手教你如何用Stable Diffusion 生成一个创意二维码?

AI已来&#xff0c;未来已来! 来势汹汹的人工智能&#xff0c;如同创世纪的洪水&#xff0c;正在全世界的范围内引发一场史无前例的科技革命。AI正在改变世界&#xff01;而我们正是这场巨变的见证者。 今天我们要介绍的内容就是&#xff1a;如何利用AI工具Stable Diffusion&a…

python接口自动化(二十六)--批量执行用例 discover(详解)

简介  我们在写用例的时候&#xff0c;单个脚本的用例好执行&#xff0c;那么多个脚本的时候&#xff0c;如何批量执行呢&#xff1f;这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后&#xff0c;用 unittest 里面的 TextTestRunner 这里类的 run 方…