线程的相关知识

  • 线程的基本概念:
  • 1、线程实质上是轻量级的进程
  • 2、引入线程后,线程替代进程,成为系统调度的基本单位
  • 3、线程不会分配内存空间,一个进程中的多线程是共用进程的内存空间;
  • 4、多线程没有多进程安全,一个线程结束,其余的线程都不能执行;
  • 5、多线程比多进程的效率更高线程间资源共享
  • 6、编写代码时,需要添加头文件(#include<pthread.h>);
  • 7、编译时,需要链接线程库(gcc xxx.c -lpthread);
  • 8、同进程一样,进程也是时间片轮转上下文切换
  • 线程的状态:
  • 1、结合态所有的线程默认是结合态,结合态的线程必须由其他线程调用pthread_join函数回收资源;
  • 2、分离态:使用pthread_detach函数,将线程设置成分离态,线程结束后由OS自动回收资源
  • 相关的API:
  • 一、创建线程:
	#include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);/*参数:thread: 创建的线程的线程号attr: 线程属性 传 NULL 表示使用默认属性start_routine: 线程处理函数--线程体arg: 线程处理函数的参数返回值:成功  	0失败  	错误码 */	
  • 二、返回当前线程的线程号
	#include <pthread.h>pthread_t pthread_self(void);/*返回值:总是成功 当前线程的线程号*/
  • 三、退出线程:
	#include <pthread.h>void pthread_exit(void *retval);/*参数:退出线程时的返回值 给 pthread_join 使用的返回值:无*/
  • 四、阻塞等待一个结合态的线程退出,回收资源:
	#include <pthread.h>int pthread_join(pthread_t thread, void **retval);/*参数:thread:线程的idretval:接受pthread_exit返回的值的 如果不关心 传NULL即可返回值:成功  0失败  错误码*/
  • 五、将线程设置成分离态:
	#include <pthread.h>int pthread_detach(pthread_t thread);/*参数:	thread:线程的id返回值:成功 	 0失败  	错误码*/
  • 六、pthread_cancel函数:
	#include <pthread.h>int pthread_cancel(pthread_t thread);/*功能:给线程发一个取消信号线程能否被取消以及能否被立即取消取决于线程的 state 和 type也就是与下面两个函数有关7.pthread_setcancelstate函数8.pthread_setcanceltype函数参数:thread:线程的id*/
	//7.pthread_setcancelstate函数int pthread_setcancelstate(int state, int *oldstate);/*参数:state:	PTHREAD_CANCEL_ENABLE  		//可被取消(默认状态)PTHREAD_CANCEL_DISABLE  	//不可被取消oldstate: 可传参NULL*/
	//8.pthread_setcanceltype函数int pthread_setcanceltype(int type, int *oldtype);/*参数:type:	PPTHREAD_CANCEL_ASYNCHRONOUS  		//可被立即取消(默认状态)PTHREAD_CANCEL_DEFERRED  			//不可被立即取消oldtype: 可传参NULL*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/216618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Python 3.x 批量删除ArcGIS Server某一文件夹下的所有服务

以往对于Server的管理大部分是以前Python2.x的版本&#xff0c;但是现在考虑到使用Pro较多&#xff0c;为Python3.x的版本&#xff0c;有一些http连接包的连接代码有一定变化&#xff0c;所以这里对相关的方法进行了整理。 1. 连接server获取token 如果想批量删除服务&#x…

Mybatis之@Select注解

Mybatis之Select注解 Select注解基本用法 Select注解的目的是为了取代xml中的select标签&#xff0c;只作用于方法上面。 抛弃了传统的xml形式 例如&#xff08;简单的sql&#xff09; public interface UserMapper {Select("SELECT id, name, age FROM user WHERE id #…

python中import mysql.connector出错无模块,且是已经pip install mysql-connector情况下

已经安装了mysql-connector和mysql-connector-python&#xff0c;使用python连接数据库&#xff0c;导入import mysql.connector仍报错&#xff1a; import mysql.connector# Connect to server cnx mysql.connector.connect(host"127.0.0.1",port3306,user"a…

加班、效率和价值

效率不等于单位时间单位人干的活&#xff0c;而是等于单位时间单位人产出的价值&#xff0c;衡量工作量的难度很大&#xff0c;而如何选择工作重点&#xff0c;挖掘工作价值难度更大。 加班的不可持续在于两点&#xff0c;第一点是对身体和精神的损害&#xff0c;降低内在动力…

视频剪辑进阶指南:批量置入视频封面,增加视频吸引力

在视频剪辑的进阶阶段&#xff0c;除了掌握基本的剪辑技巧和特效处理&#xff0c;还要尝试一些创新的方法来增加视频的吸引力。批量置入视频封面就是一种有效的方式。通过置入吸引的封面&#xff0c;能吸引观众点击视频并提高观看量。下面详细介绍云炫AI智剪如何批量置入视频封…

pandas按行值筛选

之前都没有意识到这个问题&#xff0c;就是pandas取某一行的值的问题 测试代码如下 import pandas as pd import numpy as np df pd.DataFrame({A: foo bar foo bar foo bar foo foo.split(),B: one one two three two two one three.split(),C: np.arange(8), D: np.arange…

Go (一) 基础部分4 -- 文件处理

一、文件基本介绍 1.1、打开一个文件 基本介绍&#xff1a;打开一个文件用于读取&#xff0c;如果操作成功&#xff0c;返回的文件对象的方法可用于读取文件数据。如果出错&#xff0c;错误底层类型是"*.PathError" func Open(name string) (*File, error) name stri…

GO闭包实现原理(汇编级讲解)

go语言闭包实现原理(汇编层解析) 1.起因 今天开始学习go语言,在学到go闭包时候,原本以为go闭包的实现方式就是类似于如下cpp lambda value通过值传递,mutable修饰可以让value可以修改,但是地址不可能一样value通过引用传递,但是在其他地方调用时,这个value局部变量早就释放,…

Tessy — 嵌入式软件单元测试/ 集成测试工具学习

Tessy — 嵌入式软件单元测试/ 集成测试工具 本文章向大家介绍Tessy — 嵌入式软件单元测试/ 集成测试工具,主要包括Tessy — 嵌入式软件单元测试/ 集成测试工具使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。 Tessy 源自…

数据结构第六课 -----排序

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

【Canvas】记录一次从0到1绘制风场空间分布图的过程

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热衷分享有趣实用的文章&#xff0c;希望大家多多支持&#xff0c;一起进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 背景 前置知识 风场数据 绘制风场 准备工作 生成二维网格 获取…

【BI】FineBI功能学习路径-20231211

FineBI功能学习路径 https://help.fanruan.com/finebi/doc-view-1757.html 编辑数据概述 1.1 调整数据结构 1.2 简化数据 2.1上下合并 2.2其他表添加列 2.3左右合并 新增分析指标 函数参考 https://help.fanruan.com/finereport/doc-view-1897.html 数值函数 日期函数 文…

GeoTools学习笔记

Feature要素&#xff1a; 例子&#xff1a;Csv2Shape.java 创建要素&#xff0c;先创建FeatureType&#xff0c;再创建Feature 根据FeatureCollection&#xff0c;可以创建shapefile https://docs.geotools.org/latest/userguide/library/main/data.html API详解&#xff1a;…

MySql数据库全量备份脚本

#!/bin/bash# 设置数据库连接信息 DB_HOST"localhost" DB_USER"root" DB_PASS"密码" DB_NAMES("db1" "db2" "db3" "db4")# 设置备份目录 BACKUP_DIR"/home/mysql/mysql-back/everyday" # 每天…

【unity小技巧】FPS游戏后坐力制作思路

参考原视频链接 &#xff1a;https://www.bilibili.com/video/BV1j44y1S7fX/ 注意&#xff1a;本文为学习笔记记录&#xff0c;推荐支持原作者&#xff0c;去看原视频自己手敲代码理解更加深入 免责声明&#xff1a;向宇的博客免责声明 文章目录 前言不加后座力效果简单添加后座…

如何在Cloudflare创建自己的反向代理

大家在使用Cloudflare做反向代理的时候会遇到一个问题&#xff0c;命名已经配置好了&#xff0c;但是还是访问不了&#xff0c;是因为Cloudflare的workers.dev域名在中国大陆区域已经被污染无法访问&#xff0c;所以需要自有域名进行解析。 本文的主要内容有以下三部分 1、域…

Linux系统编程:高级IO总结

非阻塞IO基本概念 高级IO核心就一个概念&#xff1a;非阻塞IO。 与该概念相对的&#xff0c;就是我们之前学习过的阻塞IO。 非阻塞IO&#xff08;Non-blocking I/O&#xff09;是一种IO模型&#xff0c;用于实现异步IO操作&#xff0c;使应用程序能够在等待IO操作完成的同时…

C语言-------动物实验

医学部一共进行了 N 场动物实验。 共有三种小动物可用来实验&#xff0c;分别是青蛙、老鼠和兔子。 每次实验都会选取其中一种动物来参与实验&#xff0c;选取数量若干。 现在请你统计一下医学部一共用了多少小动物&#xff0c;每种分别用了多少&#xff0c;每种动物使用数量…

洛谷 P8802 [蓝桥杯 2022 国 B] 出差

文章目录 [蓝桥杯 2022 国 B] 出差题目链接题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 思路解析CODE [蓝桥杯 2022 国 B] 出差 题目链接 https://www.luogu.com.cn/problem/P8802 题目描述 A \mathrm{A} A 国有 N N N 个城市&#xff0c;编号为 1 … N …

数据库范式(详细介绍)

目录 第一范式&#xff08;原子性&#xff09; 第二范式&#xff08;主键唯一性&#xff09; 第三范式&#xff08;原子性主键唯一性&#xff09; BC范式(3NFplus) 第一范式&#xff08;原子性&#xff09; 确保每列保证原子性&#xff0c;保证这个属性&#xff08;字段&am…