物联网
您现在所在的位置:首页>企业动态>物联网

技术文章分享|Linux线程实现

编辑:学到牛牛IT培训    发布日期: 2023-01-09 14:22:16  

一、 什么是线程


在一个程序里的一个执行路线就叫做线程。


二、 线程优点


·创建一个新线程的代价要比创建一个新进程小得多。


·与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多。


·线程占用的资源要比进程少很多。


·能充分利用多处理器的可并行数量。


·在等待慢速IO操作结束的同时,程序可执行其他的计算任务。


·计算密集型应用,为了能在多处理器系统上运行,将计算分解到多个线程中实现。


·IO密集型应用,为了提高性能,将IO操作重叠,线程可以同时等待不同的IO操作


三、 线程缺点


·性能损失:一个很少被外部事件阻塞的计算密集型线程往往无法与其他线程共享同一个处理器。如果计算密集型线程的数量比可用的处理器多,那么可能会有较大的性能损失,这里的性能损失指的是增加了额外的同步和调度开销,而可用的资源不变。


·健壮性降低:编写多线程需要更全面更深入的考虑,在一个多线程程序里,因时间分配上的细微偏差或者因共享了不该共享的变量而造成不良影响的可能性是很大的,换句话说,线程之间是缺乏保护的。


·缺乏访问控制:进程是访问控制的基本粒度,在一个线程中调用某些OS函数会对整个进程造成影响。


·编程难度提高:编写与调试一个多线程程序比单线程程序困难得多。


四、 Linux线程控制


1、 POSIX线程库

是POSIX的线程标准,定义了创建和操纵线程的一套API。注意:pthread不是Linux下的默认库,所以在编译的时候要附-lpthread


2、 线程创建函数原型


1.png


创建一个线程


2.png

3.png


效果如图


4.png


上面程序用sleep()函数让父线程等待子线程。但是线程中通常使用pthread_join函数,让父线程等待子线程执行完


3、 线程的等待与退出


函数原型


 5.png


一个线程对应一个pthread_join()调用,对同一个线程进行多次pthread_join()调用属于逻辑错误。那么线程什么时候退出呢?


·在线程函数运行完后,该线程也就退出了


·线程内调用函数pthread_exit()主动退出


·当线程可以被取消时,通过其他线程调用pthread_cancel的时候退出


·创建线程的进程退出


·主线程执行了exec类函数,该进程的所有的地址空间完全被新程序替换,子线程退出


示例源码


8.png

9.png


效果图如下


10.png


如果注释掉pthread_join


11.jpg

12.jpg


效果如图


13.png


免费试学
课程好不好,不如实地听一听

封闭学习

2

1

联系我们

电话:028-61775817

邮箱:1572396657@qq.com

地址:成都市金牛区西城国际A座8楼

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    扫一扫,免费咨询

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    微信公众号

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

学一流技术,找高薪工作

物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

7-24小时服务热线:

028-61775817

版权声明 网站地图

蜀ICP备2021001672号

课程问题轻松问