创建线程:pthread_creat() 函数介绍

语法

int pthread_creat(pthread_t *thread,const pthread_attr_t *attr,void *(*thread_routine)(void *),void *arg)

参数介绍

pthread_t thread : pthread_t 表示线程的数据类型,实际上是void * 类型。 每一个pthread_t 的变量都可以表示一个线程。

const pthread_attr attr:* 手动设置线程的属性,比如线程调用策略,所用栈内存大小等。

thread_routine: 设置开启线程之后线程需要执行的函数。 可以只有一个参数或者没有。返回值和形参都是void*类型。

*arg: 指传递给thread_routine() 函数的实参,如果thread_routine 不需要任何参数是,arg设置为NULL.

返回值介绍: 如果pthread_creat() 函数成功创建线程时,返回数字0, 否则返回非0值。具体如下:

EAGAIN: 系统资源不足,无法提供创建线程所需的资源。

EINVAL: 传递的attr 参数无效。

举例说明

#include <stdio.h>
#include <pthread.h>  //pthread_creat() 需要该头文件
#include <unistd.h>     //sleep() 函数需要该头文件void *  _ThreadFuncLoop(void * arg)
{if(arg==NULL)printf("arg is null \n");elseprintf("function:%s arg=%s\n",__FUNCTION__,(char*)arg);
}int main()
{pthread_t threadT1,threadT2; char *threadPra="only for test \n";int res=0;/*-------cread thread1 test---------*/printf("will test thread1 in function:%s,line:%d\n",__FUNCTION__,__LINE__);res=pthread_creat(&threadT1,NULL,_ThreadFuncLoop,NULL);if(res!=0){printf("cread thread1 error!\n");return -1;}sleep(10);   //only for wait child thread./*-------cread thread2 test---------*/printf("will test thread2 in function:%s,line:%d\n",__FUNCTION__,__LINE__);res=pthread_creat(&threadT2,NULL,_ThreadFuncLoop,(void*)threadPra);if(res!=0){printf("cread thread2 error!\n");return -1;}sleep(20);return 1;
}

其它说明:

  • pthread_creat() 函数定义在pthread.h 中
  • pthread_creat() 创建成功之后,创建的新的子线程会立马执行用户设定的thread_routine() 函数。
  • pthread_attr 属性一般不设置,使用默认配置。

创建线程:pthread_creat() 函数介绍相关推荐

  1. 【Android NDK 开发】JNI 线程 ( JNI 线程创建 | 线程执行函数 | 非 JNI 方法获取 JNIEnv 与 Java 对象 | 线程获取 JNIEnv | 全局变量设置 )

    文章目录 I . JNI 线程创建 II . 线程执行函数 III . 线程方法获取 Java 对象 IV . 线程方法获取 JNIEnv V . JNI 线程 完整代码示例 I . JNI 线程创建 ...

  2. 创建线程的函数CreateThread

    主线程的进入点函数的名字必须是main.main.WinMain或wWinMain,其它线程必须用不同的名字 主线程的进入点函数传递了字符串参数,因此可以使用 ANSI/Unicode版本的进入点函数 ...

  3. 关于windows下创建线程 CreateThread函数的用法

    HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpsa,   DWORD cbStack,    LPTHREAD_START_ROUTINE lpStartA ...

  4. windows系统中创建线程常用哪几个函数,有什么区别?

    windows系统中创建线程常用哪几个函数? 在windows系统中创建线程的函数有: CreadThread,AfxBeginThread,_beginthread,_beginthreadex. ...

  5. 使用CreateThread函数创建线程

    线程是进程中的一个实体,是被系统独立调度和分派的基本单位.一个进程可以拥有多个线程,但是一个线程必须有一个进程.线程自己不拥有系统资源,只有运行所必须的一些数据结构,但它可以与同属于一个进程的其它线程 ...

  6. clone的fork与pthread_create创建线程有何不同pthread多线程编程的学习小结(转)

    进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽 象成各种数据对象:进程控制块.虚存空间.文件系统,文件I/O.信号处理函数.所以创建一个进程的 过程就是这 ...

  7. clone的fork与pthread_create创建线程有何不同pthread多线程编程的学习小结

    进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽 象成各种数据对象:进程控制块.虚存空间.文件系统,文件I/O.信号处理函数.所以创建一个进程的 过程就是这 ...

  8. C++多线程:thread类创建线程的多种方式

    文章目录 描述 函数成员简介 总结 描述 头文件 <thread> 声明方式:std::thread <obj> 简介 线程在构造关联的线程对象时立即开始执行,从提供给作为构造 ...

  9. linux怎么创建5个线程,简明Linux系统编程_5_创建线程(总第238期)

    这节课为大家讲解一个进程如何创建线程,创建线程的函数pthread_create(),如果通过手册查找该函数的作用,参数和返回值,并通过代码运行来理解进程和线程之间的关系. 有如下几点需要着重说明一下 ...

最新文章

  1. 二分查找(递归和非递归)
  2. hive 插入数据映射到hbase_大数据基础知识:Hadoop分布式系统介绍
  3. JavaScript 闭包详解
  4. 在vue.js引用图片的问题
  5. 搭建gitlab及部署gitlab-runner
  6. 机器学习经典算法笔记——PCA和梯度上升算法
  7. # 20155224 实验四 Android程序设计
  8. 服务器访问RabbitMQ出现 User can only log in via localhost
  9. Python 入门指南 官网文档
  10. shell有bool运算么_Windows Powershell条件表达式之条件操作符
  11. python水仙花数_python求解水仙花数的方法
  12. 机械工程设计分析和Matlab应用(PDF版)
  13. canvas--初识canvs、绘制:线型、简单图形、渐变背景颜色、绘制动画、canvs形变、事件绑定
  14. 如何解除禁用 UAC
  15. 获取当前屏幕高度方法总结
  16. linux 搜索s开头的文件,Linux文件查找/内容搜索命令
  17. 易优cms 后台登录报:验证码错误 Eyoucms快速入门
  18. 服务器主板用什么芯片,C610芯片服务器主板用什么机箱好?
  19. 【关闭Antimalware Service Executable(windows defender)】
  20. 谷歌seo快速排名优化方法

热门文章

  1. NANO-SIM卡座封装
  2. 2023届互联网大厂校招薪资曝光,如何拿到大厂offer?
  3. 寻梦环游记:教你打造独特的职场标签
  4. Python学习笔记-Pygame
  5. Wannafly挑战赛26 B 冥土追魂
  6. STM32实战-无源蜂鸣器
  7. Mac电脑百度网盘登录卡死现象解决方案
  8. 中兴c600olt数据配置_OLT(ONU)语音业务数据标准配置指导-zte
  9. oracle的cbd和pdb区别,Oracle 12C CDB、PDB常用管理命令
  10. 如何用 GitHub 从零开始搭建一个博客?