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的主要内容,如果未能解决你的问题,请参考以下文章

对pthread CLion的未定义引用

线程函数中,假如没有用pthread_exit会怎样?

[架构之路-40]:目标系统 - 系统软件 - Linux OS的线程库pthread简介

[架构之路-40]:目标系统 - 系统软件 - Linux OS的线程库pthread简介

多线程

基于pthread的线程池实现