当前位置: 首页 > news >正文

20250827的学习笔记

一、pthread 线程

(1)优点:

        比多进程节省资源,可以共享变量。

(2)概念:

        线程是轻量级进程,一般是一个进程中的多个任务。

注:进程是系统中最小的资源分配单位,线程是系统中最小的执行单位。

(3)特征:

        1、共享资源

        2、效率高 30%

        3、三方库:pthread cloneposix

注:使用时要记得编写代码头文件:pthread.h,编译代码:gcc 1.c -lpthread

(4)缺点:

        1、线程和进程相比,稳定性,稍微差些

        2、线程的调试gdb,相对麻烦些。

(5)线程和进程的共同点

        并发

(6)线程和进程的不同点

        1、创建的开销,proc 3G,thread 8M。

        2.、proc数据不共享 thread 共享(除栈区)。

        3、稳定性,proc稳定,thread(不稳定)。

        4、proc(大任务),thread(大任务中的小任务)。

        5、线程是属于某个进程的。

二、创建多线程

1.int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);

功能:

        该函数可以创建指定的一个线程。

参数:

        thread 线程id,需要实现定义并由该函数返回。

        attr 线程属性,,一般是NULL,表示默认属性。

        start_routine 指向指针函数的函数指针。

返回值:

        成功        0

        失败        错误码

2. pthread_t pthread_self(void); unsigned long int;

注:使用输出%lu

功能:

        获取当前线程的线程id

参数:无

返回值:

        成功        返回当前线程的线程id

        失败        -1;

三、线程的退出

1.void pthread_exit(void *retval); 

功能:

        子线程自行退出

参数:

        retval 线程退出时候的返回状态,临死遗言。

返回值:无

2.int pthread_cancel(pthread_t thread);

功能:

        请求结束一个线程

参数:

        thread 请求结束一个线程tid

返回值:

        成功        0

        失败        -1;

四、线程的回收

1.int pthread_join(pthread_t thread, void **retval);

功能:

        通过该函数可以将指定的线程资源回收,该函数具有阻塞等待功能,如果指定的线程没有结束,则回收线程会阻塞。

参数:

        thread        要回收的子线程tid

        retval        要回收的子线程返回值/状态。

返回值:

        成功        0

        失败        -1

注:设置分离属性目的是,线程消亡,自动回收空间。

2.int pthread_attr_init(pthread_attr_t *attr);

功能:

        初始化一个attr的变量

参数:

        attr,需要变量来接受初始值

返回:

        成功        0

        错误        非0

3.int pthread_attr_destroy(pthread_attr_t *attr);

功能:

        销毁attr变量。

参数:

        attr,属性变量

返回:

        成功        0

        错误        非0

4.void pthread_cleanup_push(void (*routine)(void *), void *arg);

功能:

        注册一个线程清理函数

参数:

        routine        线程清理函数的入口

        arg        清理函数的参数。

返回值:无

5.void pthread_cleanup_pop(int execute);

功能:

        调用清理函数

参数:

        execute        非0执行清理函数,0不执行清理

返回值:无

http://www.dtcms.com/a/353063.html

相关文章:

  • Kubernetes(k8s) 常用命令
  • 从零开始学习JavaWeb-19
  • 解决跨运营商限速:在飞牛OS系统上启用BBR算法优化网络速度
  • 数据结构:单链表的应用(力扣算法题)第一章
  • 腾讯云人脸识别API技术深度解析:从算法原理到工程实践
  • Diagnosing bias and variance|诊断偏差和方差
  • 文件系统中的核心数据结构
  • 链表-25.k个一组翻转链表-力扣(LeetCode)
  • 镜中万象:论观察即存在的递归拓扑与生命的意识本质
  • FPGA的工作原理
  • AI赋能CRM:纷享销客访销大脑重构快消品销售策略
  • d435i相机读取镜头内参和相对之间的外参
  • 三方相机问题分析八:【返帧异常导致性能卡顿】Snapchat后置使用特效预览出现卡顿
  • Jmeter5.3性能测试:文件下载脚本编写后,导出文件的接收
  • 第五章:Go运行时、内存管理与性能优化之栈与堆内存分配 (逃逸分析)
  • 在语言模型监督式微调(SFT)中的 负对数似然(Negative Log-Likelihood, NLL)等价于最大化似然
  • 开发者如何在 Gitee 上开源一个自己的项目
  • 开源 C++ QT Widget 开发(七)线程--多线程及通讯
  • keepalived mysql 主从复制 容器实现(失败)
  • JVM之【Java对象在内存中的结构】
  • windows下 docker desktop 清理ext4.vhdx文件 并缩小ext4.vhdx文件
  • 二次校验请求源 IP 是否在 WAF 官方 IP 段内” + “校验是否携带 WAF 专属 HTTP 头
  • 基于Spark的白酒行业数据分析与可视化系统的设计与实现
  • [后端快速搭建]基于 Django+DeepSeek API 快速搭建智能问答后端
  • 域名、ip、DSN、URL
  • springbootr如何调用dolphinshceduler
  • 【记录】R|Windows 下的 R studio 安装调研准备工作、安装过程以及 ggplot2 包的引入测试
  • GIP电路
  • leetcode 974 和可被K整除的子数组
  • 【LeetCode 热题 100】287. 寻找重复数——双指针