pthread库实现简单并行程序:Hello
Posted kongkongxiaoxie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pthread库实现简单并行程序:Hello相关的知识,希望对你有一定的参考价值。
- 头文件 pthread.h
获取线程数量:
将字符串转化为10进制数代码:
thread_count=strtol(argv[1],NULL,10);
其语法格式为:
long strtol( const char* number_p //in,输入字符 char** end_p //out,结束 int base //in);进制数,我们的程序转化为10进制数字
- 显示启动线程
显示地启动线程,并且构造能存储线程信息的数据结构;
为每个线程的pthread_t对象分配内存,pthread_t数据结构用来存储线程的专有信息
thread_handles = malloc(thread_count*sizeof(thread_t));//存储线程信息
- 全部程序入下
#include<stdio.h> #include<stdlib.h> #include<pthread.h> int thread_cout; void* Hello(void* rank); int main(int argc,char* argv[]) long thread; pthread_t* thread_heandles; thread_cout=strtol(argv[1],NULL,10); thread_heandles=malloc(thread_cout*sizeof(pthread_t)); for (thread = 0; thread < thread_cout; thread++) pthread_create(& thread_heandles[thread],NULL,Hello,(void*)thread); printf("Hello from the main thread. \\n"); for(thread = 0; thread < thread_cout; thread++) pthread_join(thread_heandles[thread],NULL); free(thread_heandles); printf("你好hello!"); return 0; void * Hello(void* rank) long my_rank=(long)rank; printf("Hello for thread %d of %d \\n",my_rank,thread_cout); return NULL;
在mac或者linux系统下,通过如下命令在命令行中编译:
gcc -g -Wall -o pth_hello hello.c -lpthread
然后通过如下命令进行运行
./pth_hello <number of threads>
例如,我们创建5个线程的命令如下:
./pth_hello 5
那么,我们的终端输出如下
以上是关于pthread库实现简单并行程序:Hello的主要内容,如果未能解决你的问题,请参考以下文章
[架构之路-40]:目标系统 - 系统软件 - Linux OS的线程库pthread简介