关于linux下的多线程使用sem信号量的运行问题

关于linux下的多线程使用sem信号量的运行问题,第1张

不是信号量的问题

printf函数,是先写到输出缓冲,遇到\n时,或者缓冲区满时,或者有强制输出(fflush)时,才会将缓冲区里的内容输出到屏幕上(标准输出设备:stdout)。你的代码里面并没有以上3个触发条件的任意一种,所以printf的内存没有实际输出到屏幕上。

你只要在每个printf函数后面加上fflush(stdout)就可以了。

CPU多线程简称SMT,可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源,可最大限度地实现宽发射、乱序的超标量处理,提高处理器运算部件的利用率,缓和由于数据相关或Cache未命中带来的访问内存延时。

注:当没有多个线程可用时,SMT处理器几乎和传统的宽发射超标量处理器一样。

cpu的多线程技术可以为高速的运算核心准备更多的待处理数据,减少运算核心的闲置时间;解决了负载均衡问题,充分利用了CPU资源,提高CPU的使用率。采用多线程的方式可以同时完成几件事情而不互相干扰,缩短了处理大量的IO操作时或处理的情况需要花费大量的时间。

多线程的好处:

1、使用线程可以把占据时间长的程序中的任务放到后台去处理

2、用户界面更加吸引人,这样比如用户点击了一个按钮去触发某件事件的处理,可以弹出一个进度条来显示处理的进度

3、程序的运行效率可能会提高

4、在一些等待的任务实现上如用户输入,文件读取和网络收发数据等,线程就比较有用了.

多线程的缺点:

1、如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换.

2、更多的线程需要更多的内存空间

3、线程中止需要考虑对程序运行的影响.

4、通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/302238.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存