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

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.xdnf.cn/news/18863.html

相关文章:

  • # 快递单号查询系统:一个现代化的物流跟踪解决方案
  • [后端快速搭建]基于 Django+DeepSeek API 快速搭建智能问答后端
  • PyTorch闪电入门:张量操作与自动微分实战
  • 济南大学杨波与济南青盟信息技术有限公司杨华伟
  • DMA学习
  • 31. 什么是字符串常量池
  • 模板方法设计模式
  • 【学习笔记】GB 42250-2022标准解析
  • 初始Linux——指令与权限
  • FPGA学习笔记——Verilog中可综合和不可综合语句
  • 2025软件测试面试八股文(完整版)
  • 【科研绘图系列】R语言在海洋生态学数据可视化中的应用:以浮游植物叶绿素和初级生产力为例
  • SFTP服务器可以通过同一个登录到SFTP服务器的账号密码连接上控制台吗
  • “上门经济”的胜利:深度解析家政O2O如何用“用户体验”重塑传统行业
  • 【小白笔记】网速
  • 支持向量机(SVM)学习总结
  • 德克西尔氢气探测器:工业安全守护核心
  • 从高层 PyTorch 到中层 CUDA Kernel 到底层硬件 Tensor Core
  • 深度解析BiTGAN:基于双向Transformer生成对抗网络的长期人体动作预测
  • Linux 把启动脚本制作成系统服务(通过 systemctl start xxx 启动)
  • JHipster-从零开始学习指南
  • Autodesk Maya 2026.2 全新功能详解:MotionMaker AI 动画、LookdevX 材质增强、USD 工作流优化
  • 实现自己的AI视频监控系统-第二章-AI分析模块3(核心)
  • Python常见设计模式3: 行为型模式
  • OpenCV4.X库功能全解---个人笔记
  • 【解锁Photonics for AI:系统学习光学神经网络与超表面设计,成就下一代光芯片工程师】
  • TCP并发服务器构建
  • Linux 离线环境下 Anaconda3 与核心机器学习库(scikit-learn/OpenCV/PyTorch)安装配置指南
  • React内网开发代理配置详解
  • 安装了TortoiseSVN但是在idea的subversion里面找不到svn.exe