Linux C-线程相关函数1

1、线程 thread

1.1 线程的创建 pthread_create

函数原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);

重要参数

        1、start_routine 子线程运行的函数名

        2、arg 传递参数的指针

返回值

        成功:0

        失败:其他

1.2 线程的回收

1.2.1 pthread_join

函数原型:int pthread_join(pthread_t thread, void **retval);

函数描述:阻塞式等待指定线程的结束

重要参数

返回值

        成功:0

        失败:其他

1.2.2 pthread_detach

函数原型:int pthread_detach(pthread_t thread);

函数描述:非阻塞式,当指定线程结束时,系统自动回收线程资源

重要参数

返回值

        成功:0

        失败:其他

1.3 线程的退出 pthread_exit

函数原型:void pthread_exit(void *retval);

重要参数

        1、retval 与pthread_join配合使用,用于接收退出状态的返回值

返回值

        无

1.4 获取当前线程号 pthread_self

函数原型:pthread_t pthread_self(void);

重要参数

返回值

2、互斥锁 mutex

1.1 互斥锁初始化 pthread_mutex_init

函数原型:int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);

重要参数

        1、mutex: pthread_mutex_t mutex

返回值

        成功:0

        失败:其他

1.2 上锁 

1.2.1 pthread_mutex_lock

函数原型:int pthread_mutex_lock(pthread_mutex_t *mutex);

函数描述:阻塞式

重要参数

返回值

        成功:0

        失败:其他

1.2.2 phtread_mutex_trylock

函数原型:int pthread_mutex_trylock(pthread_mutex_t *mutex);

函数描述:非阻塞式

重要参数

返回值

        成功:0(获取到锁)

        失败:其他

1.3 解锁 pthread_mutex_unlock

函数原型:int pthread_mutex_unlock(pthread_mutex_t *mutex);

重要参数

返回值

        成功:0

        失败:其他

1.4 销毁互斥锁 pthread_mutex_destroy

函数原型:int pthread_mutex_destroy(pthread_mutex_t *mutex);

重要参数

返回值

        成功:0

        失败:其他

3、信号量 semaphore

3.1 创建信号量 sem_create

函数原型:int sem_init(sem_t *sem, int pshared, unsigned int value);

重要参数

        1、pshare: 0-线程间  1-进程间

        2、value:信号量的值

返回值

        成功:0

        失败:-1

3.2 通知post

函数原型:int sem_post(sem_t *sem);

重要参数

返回值

        成功:0

        失败:-1

3.3 等待通知wait

函数原型:int sem_wait(sem_t *sem);

重要参数:阻塞式

返回值

        成功:0

        失败:-1

3.4 销毁信号量

函数原型:int sem_destroy(sem_t *sem);

重要参数

返回值

        成功:0

        失败:-1

疑问及待验证的问题:

1、线程的创建和使用

1.1、Linux c有类似java一样的线程池吗

1.2、pthread_exit的retval如何使用,目前还不太明白。

2、互斥锁

2.1、mutex锁静态构建的方法

3、信号量

3.1、一个线程post,多个线程wait

3.2、多个线程post,一个线程wait

3.3、多个线程post,多个线程wait

3.4、如何获取信号量的值,sem_t的value,以及最大值是多少

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

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

相关文章

PCL 点云配准-4PCS算法(粗配准)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 加载点云数据 2.1.2 执行4PCS粗配准 2.1.3 可视化源点云、目标点云和配准结果 2.2完整代码 三、实现效果 3.1原始点云 3.2配准后点云 PCL点云算法汇总及实战案例汇总的目录地址链接…

猫分鱼干 -算法题解

题目 假如有一群猫排成一行,要分配鱼干,每一只猫都有一个等级值。你作为管理员有很多鱼干但是需要按下边的分配制度分配: 1. 每一只猫至少要分配一斤鱼干,鱼干分配最小单位是斤,必须保证是整数。 2. 猫比他们邻居有更高…

沥川的算法学习笔记:基础算法(1)----快速排序

1.快速排序 快速排序是一种高效的排序算法,它利用了分治的思想。快速排序的基本思想是选择一个基准元素,将数组分成两个子数组,其中一个子数组的元素都小于等于基准元素,另一个子数组的元素都大于等于基准元素,然后对这…

Javaweb开发快捷键集锦(Spring boot)

1.动态SQL于xml文件格式化快捷键 Visual Studio: Windows: Ctrl K, Ctrl D IntelliJ IDEA 或 Android Studio: Windows/Linux: Ctrl Alt LmacOS: Command Option L 2.在 IntelliJ IDEA 中,为Java文件添加多行注释的快捷键 Windows/Linux: Ctrl Shift …

JavaCove部署文档

1. 基础配置 1.1服务器: 2 核 2G 1.2. 一个域名 1.3. 项目地址: gitee:https://gitee.com/guo-_jun/JavaCove github:https://github.com/nansheng1212/JavaCove 2. CentOS 安装 Docker 官方网站上有各种环境下的 安装指南,这里主要介绍…

IPD体系中如何构筑E2E的产品成本竞争力

在IPD咨询项目实施过程中,汉捷咨询发现很多企业在新产品开发过程中忽略了对产品的目标成本管控,出现产品开发出来后成本过高,产品竞争力不足,上市后销售不佳等情况。 产品的成本是市场竞争的关键制胜因素之一,也是产品…

jquery实现点击菜单实现高德地图定位点与数据展示联动效果

🍊jquery实现点击菜单实现高德地图定位点与数据展示联动效果 版本介绍: jQuery v3.7.1高德地图JS API 2.0 代码仓库 ⭐ Gitee:实现点击菜单实现高德地图定位点与数据展示联动效果 1.启动说明 📔 推荐VS Code编辑器插件Live Ser…

论文笔记:RelationPrompt :Zero-Shot Relation Triplet Extraction

论文来源: ACL Findings 2022 论文链接:https://arxiv.org/pdf/2203.09101.pdf 论文代码:http://github.com/declare-lab/RelationPrompt 本篇论文是由阿里达摩院自然语言智能实验室于2022年发表的关于零样本关系抽取的顶会论文,本篇博客将记录我在阅读过程中的一些笔记…

ros2 bag 详解

一.命令行详解 ros2 bag 是一个命令行工具,用于记录系统中发布的主题数据。它积累传递给任意数量主题的数据,并将其保存在数据库中。然后可以重放数据以再现测试和实验的结果。记录主题也是分享你的工作并让别人重新创造它的好方法。 &…

pyflink过滤kafka数据

from pyflink.table import (TableEnvironment, EnvironmentSettings)# 输入、输出、过滤条件 columns_in [ ... ]columns_out [ ... ] filter_condition "name 蒋介石 and sex 男"# 创建执行环境t_env TableEnvironment.create(EnvironmentSettings.in_stream…

jmeter中对于有中文内容的csv文件怎么保存

jmeter的功能很强大,但是细节处没把握好就得不到预期的结果。今天来讲讲有中文内容的csv文件的参数化使用中需要注意的事项。 对于有中文内容,涉及到编码格式,为了让jmeter能正确地读取csv文件中的中文,需要把文件转码为UTF-8BOM…

EFFPLMN(Forbidden PLMNs)

EFFPLMN(Forbidden PLMNs)文件包含了被禁止的公共陆地移动网络(PLMN)的编码。当网络拒绝位置更新请求,并给出“PLMN不允许”的原因时,这些PLMN会被写入到这个文件中。移动设备(UE)在…

OPENSSL-2023/11/10学习记录-C/C++对称分组加密DES

对称分组加密常用算法: DES 3DES AES 国密SM4 对称分组加密应用场景: 文件或者视频加密 加密比特币私钥 消息或者配置项加密 SSL通信加密 对称分组加密 使用异或实现一个简易的对称加密算法 A明文 B秘钥 AB密文AB (AB)B A 密码补全和初始化 数…

学习第三十六行

QValidator::State里面state为0,完全不匹配,1,部分匹配,2,完全匹配,对于label或者textedit里面的字符均为QString类型,特别是遇到数字,需要QString::number转化,对于正则表达式&…

数据操作学习

1.导入torch。虽然被称为PyTorch,但应导入torch而不是pytorch import torch 2.张量表示一个数值组成的数组,这个数组可能有多个维度 xtorch.arange(12)x 3.通过张量的shape属性来访问张量的形状和张量中元素的总数 x.shape x.numel() 4.要改变张量的形…

LangGraph - Hierarchical Agent Teams

本文翻译整理自 Hierarchical Agent Teams https://langchain-ai.github.io/langgraph/tutorials/multi_agent/hierarchical_agent_teams/ 文章目录 一、前言二、设置三、创建工具四、Helper Utilities五、定义代理 Team研究 Team文档写作Team 六、添加图层 一、前言 在前面的…

存在重复元素 II

题目 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] nums [j],并且 i 和 j 的差的 绝对值 至多为 k。 示例 1: 输入: nums [1,2,3,1], k 3 输出: true示例 2: 输入: nums [1,0,1,1], k 1 输…

【高阶数据结构】揭开红黑树‘恶魔’的面具:深度解析底层逻辑

高阶数据结构相关知识点可以通过点击以下链接进行学习一起加油!二叉搜索树AVL树 大家好,我是店小二,欢迎来到本篇内容!今天我们将一起探索红黑树的工作原理及部分功能实现。红黑树的概念相对抽象,但只要我们一步步深入…

自定义注解和组件扫描在Spring Boot中动态注册Bean(二)

在Spring Boot中,自定义注解和组件扫描是实现动态注册Bean的两种重要手段。通过它们,开发者可以灵活地管理Spring容器中的Bean,提高开发效率和代码的可维护性。本文将详细讲解自定义注解和组件扫描在Spring Boot中如何动态注册Bean。 自定义…

html嵌入vue如何使用?

html嵌入vue如何使用&#xff1f; <script src"https://cdn.bootcdn.net/ajax/libs/vue/2.6.14/vue.min.js"></script> <script src"https://cdn.bootcdn.net/ajax/libs/vuex/3.6.2/vuex.min.js"></script> <script src&q…