• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    linux创建线程之pthread_create的具体使用

    pthread_create函数

    函数简介

      pthread_create是UNIX环境创建线程函数

    头文件

      #include<pthread.h>

    函数声明

      int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);

    返回值

      若成功则返回0,否则返回出错编号

    参数

      第一个参数为指向线程标识符的指针。

      第二个参数用来设置线程属性。

      第三个参数是线程运行函数的地址。

      最后一个参数是运行函数的参数。

    注意

      在编译时注意加上-lpthread参数,以调用静态链接库。因为pthread并非Linux系统的默认库。

    pthread_join函数

    函数简介

      函数pthread_join用来等待一个线程的结束。

    函数原型为:

      extern int pthread_join __P (pthread_t __th, void **__thread_return);

    参数:

      第一个参数为被等待的线程标识符

      第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。

    注意

        这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待线程的资源被收回。如果执行成功,将返回0,如果失败则返回一个错误号。

    例子:

    #include<stdio.h>
    #include<stdlib.h>
    #include<pthread.h>
    
    /* 声明结构体 */
    struct member
    {
      int num;
      char *name;
    };
    
    /* 定义线程pthread */
    static void * pthread(void *arg)
    {
      struct member *temp;
    
      /* 线程pthread开始运行 */
      printf("pthread start!\n");
    
      /* 令主线程继续执行 */
      sleep(2);
    
      /* 打印传入参数 */
      temp = (struct member *)arg;
      printf("member->num:%d\n",temp->num);
      printf("member->name:%s\n",temp->name);
    
      return NULL;
    }
    
    /* main函数 */
    int main(int agrc,char* argv[])
    {
      pthread_t tidp;
      struct member *b;
    
      /* 为结构体变量b赋值 */
      b = (struct member *)malloc(sizeof(struct member));
      b->num=1;
      b->name="mlq";
    
      /* 创建线程pthread */
      if ((pthread_create(&tidp, NULL, pthread, (void*)b)) == -1)
      {
        printf("create error!\n");
        return 1;
      }
    
      /* 令线程pthread先运行 */
      sleep(1);
    
      /* 线程pthread睡眠2s,此时main可以先执行 */
      printf("mian continue!\n");
    
      /* 等待线程pthread释放 */
      if (pthread_join(tidp, NULL))
      {
        printf("thread is not exit...\n");
        return -2;
      }
    
      return 0;
    }

    编译与执行结果

        编译与执行结果如下图所示,可以看到主线程main和线程pthread交替执行。也就是说是当我们创建了线程pthread之后,两个线程都在执行,证明创建成功。另外,可以看到创建线程pthread时候,传入的参数被正确打印。


    到此这篇关于linux创建线程之pthread_create的具体使用的文章就介绍到这了,更多相关linux pthread_create内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:centos8使用Docker部署Django项目的详细教程
    下一篇:tomcat关于配置servlet的url-pattern的问题思路详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    linux创建线程之pthread_create的具体使用 linux,创建,线程,之,pthread,