作用

用于创建一个线程。

头文件

#include<pthread.h>

函数声明

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

参数

  • tidp:事先创建好的pthread_t类型的参数。成功时tidp指向的内存单元被设置为新创建线程的线程ID。
  • attr:用于定制各种不同的线程属性。通常直接设为NULL。
  • start_rtn:新创建线程从此函数开始运行。无参数是arg设为NULL即可。
  • arg:start_rtn函数的参数。无参数时设为NULL即可。有参数时输入参数的地址。当多于一个参数时应当使用结构体传入。(以下举例)

返回值:

成功返回0,否则返回错误码。

简单的使用

#include <pthread.h>
#include <iostream>
#include <string>
using namespace std;
pthread_t ntid;void printids(const char *s){pid_t       pid;pthread_t   tid;pid = getpid();tid = pthread_self();printf("%s pid %lu tid %lu (0x%lx)\n", s, (unsigned long)pid,(unsigned long)tid, (unsigned long)tid);
}struct Param {int a;int b;int c;
};void *thr_fn(void *arg) {cout << "----enter sub thread--------" << endl;Param tmp = *(Param *)arg;cout << "tmp.a=" << tmp.a << endl;cout << "tmp.b=" << tmp.b << endl;cout << "tmp.c=" << tmp.c << endl;printids("new thread: ");cout << "Change to C++ code!!" << endl;cout << "----exit from sub thread----" << endl;return((void *)0);
}int main(void){int     err;int num = 123;Param param1;param1.a = 11;param1.b = 22;param1.c = 33;//通过结构体向线程函数传入多个参数err = pthread_create(&ntid, NULL, thr_fn, &param1);if (err != 0)err_exit(err, "can't create thread");printids("main thread:");sleep(1);exit(0);
}

【c++并发编程】pthread_create的使用相关推荐

  1. 深入理解计算机系统结构——并发编程

    并发编程 如果逻辑控制流在实际上重叠,那么它们就是并发的,这种常见的现象称为并发,出现在计算机系统的许多不同层面上. 应用级并发在其他情况下也是很有用的: 访问慢速I/O设备. 与人交互. 通过推迟工 ...

  2. 【读书笔记】并发编程需要注意的几个典型问题

    本文为<Computer Systems: A Programmer's Perspective>第12.7节-并发编程问题的读书笔记.下面开始正文. 1. 线程安全        一个线 ...

  3. go语言特性理解--变量/函数/面向对象/并发编程/错误处理

    1. 变量 变量的声明很像 javascript,使用 var关键字.注意:go是静态类型的语言 //声明初始化一个变量 var x int = 100 var str string = " ...

  4. 并发编程四:深入理解java线程

    文章目录 深入理解java线程 线程基础知识 线程的同步互斥 上下文切换(Context switch) 线程的生命周期 操作系统层面线程生命周期 Java线程的生命周期 java线程详解 java线 ...

  5. Java 并发编程解析 | 如何正确理解Java领域中的多线程模型,主要用来解决什么问题?

    苍穹之边,浩瀚之挚,眰恦之美: 悟心悟性,善始善终,惟善惟道! -- 朝槿<朝槿兮年说> 写在开头 我国宋代禅宗大师青原行思在<三重境界>中有这样一句话:" 参禅之初 ...

  6. CSAPP:第12章 并发编程

    CSAPP:第12章 并发编程 文章目录 CSAPP:第12章 并发编程 12.1 基于进程的并发编程(Process-based) 12.1.1 基于进程的并发服务器 12.1.2 进程的优劣 12 ...

  7. linux下的并发编程详解

    使用应用级并发的应用程序称为并发程序(concurrent program).现代操作系统提供3种基本的构造并发程序的方法:进程.I/O多路复用和线程.下面将分别予以讨论. 1. 基于进程的并发编程 ...

  8. CSAPP 并发编程 ——深入理解计算机系统

    12.3 基于线程的并发编程 到目前为止,我们已经看到了两种创建并发逻辑流的方法. 在第一种方法中,我们为每个流使用了单独的进程.内核会自动调度每个进程. 而每个进程有它自己的私有地址空间,这使得流共 ...

  9. 并发编程中的锁、条件变量和信号量

    在并发编程中,经常会涉及到锁.条件变量和信号量.本文从并发开始,探究为什么需要它们,它们的概念,实现原理以及应用. 并发简介 并发是指多个事情,在同一时间段内同时发生了.和并发经常一起被提到的是并行. ...

  10. 并发编程---JMM模型

    引言 在了解本文之前,我们知道所谓的并发编程就是平日中接触的多线程编程,既然扯到了多线程,那一定绕不开多线程的一些特性以及每个线程的结构或者说是线程的内存模型.接下来,我们从JMM(Java线程内存模 ...

最新文章

  1. Python入门100题 | 第056题
  2. 一个filter子查询测试
  3. 1960 范德蒙矩阵(数学贪心)
  4. 天梯赛2016-L2
  5. istanbul —— JavaScript 代码覆盖率检查工具
  6. android 最新写法,详解Android 硬布局item的高级写法
  7. emacs的配色方案
  8. 关于三甲医院转行IT 医生家属说两句
  9. OpenShift 之 Quarkus(4)用集成的Prometheus监控Quarkus应用
  10. 生产者-消费者习题的运用
  11. 文本框输入限制正则表达式收集
  12. CKEditor 实例
  13. SpringCloud之Zuul微服务网关 什么是Zuul微服务网关?
  14. 用友OA/NC/NCCloud漏洞集合
  15. 微信应用域名所有权验证管理
  16. 谈谈Linux中Redis的薪火相传与反客为主及如何实现
  17. 摄影基础1 : 135相机
  18. 企业管理信息系统 Django-ERP
  19. 解决Git下载速度慢、需要授权等问题
  20. 泡沫消防车电控系统解决方案

热门文章

  1. 计算机专业用什么轴的键盘,平常爱打游戏,机械键盘应该买什么轴?
  2. PAT | 1080 MOOC期终成绩 (25分)【附柳神代码】
  3. gsoap使用方法及心得
  4. 基于java实现的分词以及词频统计,准备制作词云数据
  5. RankNet,LambdaRank,LambdaMart
  6. 二叉树的基本运算实验报告C语言,实验三 二叉树基本操作与应用实验
  7. python控制各情况出现概率_python实现概率分布
  8. lgv50怎么进入fastboot模式_fastboot知识扫盲 高级刷机方式fastboot模式怎么进入?
  9. yishaadmin,yishaadmin修改数据后回到起始页的解决办法,保持在修改前的页码,分页组件在修改数据后不返回到第一页
  10. 建立Baseline之repo,manifest