linux线程控制-2(线程控制函数)
记录肖堃老师讲解的linux线程
1. 创建线程
int pthread_create( (pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg ) )
参数:
thread - 指向线程ID的指针,当函数成功返回时将存储所创建的子线程ID。
attr - 用于指定线程属性(一般直接传入空指针NULL,采用默认线程属性)
start_routine - 线程的启动例程函数指针,创建的线程首先执行该函数代码(可以调用其他函数)
arg - 向线程的启动例程函数传递信息的参数。
返回值:
成功返回0,出错返回各种错误码
调用pthread_create函数的线程,是所创建线程的父线程。
2. 线程的终止方式
1)线程从启动例程函数中返回,函数返回值作为线程的退出码
2)线程被同一进程中的其他线程取消
3)线程在任意函数中调用pthread_exit函数终止执行
取消线程函数(取消同一进程中的其他线程,即让该线程终止):
pthread_cancel( pthread_t tid )
参数:
tid - 需要取消的现场ID
返回值:
成功返回0,出错返回错误码
线程终止函数:
void pthread_exit( void *rval_ptr )
参数:
rval_ptr - 线程退出时,需要传递给父线程的参数,该指针将参数传递给pthread_join函数(与exit函数参数用法类似)
在默认情况下,pthread_cancel函数与被取消线程(ID等于tid的线程)自身调用pthread_exit函数效果等同。
pthread_cancel并不等待线程终止,它仅仅是提出请求。
父线程等待子线程终止函数:
int pthread_join( pthread_t thread, void **rval_ptr )
参数:
thread,等待线程的标识符
rval_ptr,线程结束时的返回值(若不关心线程返回值,可直接将该参数设置为空指针)
若线程从启动线程(子线程)返回,rval_ptr将包含子线程的返回值
若线程是被其他线程取消(同进程的其他线程),rval_ptr指向的内存单元值置为PTHREAD_CANCELED
若线程通过调用pthread_exit函数终止,rval_ptr就是调用pthread_exit时传入的参数。
返回值:
成功,返回0;错误返回错误码
调用该函数的父线程将一直被阻塞,直到指定的子线程终止。
linux线程控制-2(线程控制函数)的更多相关文章
- 线程锁的本质:线程控制、线程状态控制 while if:根据线程的关系(模式)协调线程的执行
线程锁的本质:线程控制.线程状态控制 while if https://www.cnblogs.com/feng9exe/p/8319000.html https://www.cnblogs.com/ ...
- 0039 Java学习笔记-多线程-线程控制、线程组
join线程 假如A线程要B线程去完成一项任务,在B线程完成返回之前,不进行下一步执行,那么就可以调用B线程的join()方法 join()方法的重载: join():等待不限时间 join(long ...
- Java-多线程第三篇3种创建的线程方式、线程的生命周期、线程控制、线程同步、线程通信
1.Java使用Thread类代表线程. 所有的线程对象必须是Thread类或其子类的实例. 当线程继承Thread类时,直接使用this即可获取当前线程,Thread对象的getName() ...
- 线程控制之线程和I/O
http://www.cnblogs.com/nufangrensheng/p/3498723.html中介绍了pread和pwrite函数,这些函数在多线程环境下是非常有帮助的,因为进程中的所有线程 ...
- 线程控制之线程和fork
当线程调用fork时,就为子进程创建了整个进程地址空间的副本.回忆http://www.cnblogs.com/nufangrensheng/p/3509492.html中讨论的写时复制,子进程与父进 ...
- Linux系统编程(27)——线程控制
进程在各自独立的地址空间中运行,进程之间共享数据需要用mmap或者进程间通信机制,那么如何在一个进程的地址空间中执行多个线程呢.有些情况需要在一个进程中同时执行多个控制流程,这时候线程就派上了用场,比 ...
- Linux学习--线程控制
关于线程控制,主要就是几个模块,我们一个一个消灭.消化: 一.线程创建: 1.先来看看在Linux环境下的线程创建函数: 分析:意思很明显: 1.函数名是 pthread_create : 2.功能 ...
- linux线程控制&线程分离
线程概念 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元. 线程是程序中一个单一的顺序控制流程.进程内一个相对独立的.可调度的执行单元,是系统独立 ...
- Linux系统编程:线程控制
一.提出问题 问1.线程存在的意义是什么?什么时候适合使用多线程? 答1.在单进程环境中实现多任务,线程可访问其所在进程的资源,例如内存.描述符等.对于单进程,如果要完成多项任务,这些任务只能依次执行 ...
随机推荐
- [转]十分钟带你理解Kubernetes核心概念
本文将会简单介绍 Kubernetes的核心概念.因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍.相反,我们会使用一些图表(其中一些是动画)和示例来解释这些 ...
- Django---博客项目实战
1.urls from django.conf.urls import url from django.contrib import admin from blog import views urlp ...
- 如何阅读一本书——分析阅读Pre
如何阅读一本书--分析阅读Pre 前情介绍 作者: 莫提默.艾德勒 查尔斯.范多伦 初版:1940年,一出版就是全美畅销书榜首一年多.钢铁侠Elon.Musk学过. 需要注意的句子: 成功的阅读牵涉到 ...
- 线程_进程间通信Queue合集
# Queue的工作原理 from multiprocessing import Queue q = Queue(3)#初始化一个Queue对象,最多可接收3条put消息 q.put("In ...
- 探究:编程语言那么多,为什么偏偏是 C 语言成了大学的必修课?
谁叫你不幸生在中国了? ——何祚庥(中国科学院院士) 这是一本给非计算机专业的大学生的C语言的书.“我不是学计算机的,为啥要学C语言?”这个问题每年在中华大地都会被问上几百万次.被问的对象可能是老师, ...
- dp的本质
什么是真正的dp?有什么特点?怎么来搞. 最近遇到了一些以前的题目发现没有好好的理解就直接写了 大多都是书上的算法并不是自己真正的理解. 1 关于背包 我总结一下 可能 有助于对模型的更快发现 01 ...
- 中国剩余定理(CRT)及其扩展(EXCRT)详解
问题背景 孙子定理是中国古代求解一次同余式方程组的方法.是数论中一个重要定理.又称中国余数定理.一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作<孙子算经>卷下第 ...
- 一些html基础概念
不做前端好多年,之所以突然写这个,是因为最近在做一个监控平台,需要一点web前端开发,想着顺便做了,但是由于长时间没接触前端导致一些基础知识的遗忘,所以在此记录下备忘,没有啥高深的东西,完全是为了对抗 ...
- win10 安装tensorflow2.0 GPU版本遇到的坑
背景:我的机器上tensorflow 1.14 & 2.0,这俩版本都有,之前都是用1.14版本,今天试一下2.0尝尝鲜, 结果就掉坑去了 把CUDA10.1 和 cudnn 安装 ...
- 安装Hive 使用beeline 链接 出现 User: AAA is not allowed to impersonate BBB
AAA 指的是 hdfs 文件系统的用户 BBB 是hive 设置的 hiveserver2 配置文件中的登陆用户名 在hadoop 配置如下 <property> <name> ...