LINUX多线程
2023-12-18 18:37:04
线程之间互不影响。
每一个进程有一个main函数,进程与进程之间需要通信方式。
但是效率低下。
多线程是只有一个main函数:
调度是以线程为单位的。
资源的分配是以进程来分配的。
如何创建线程?
运行: -lpthread 链接某些库
目的:创建额外的线程,用来接收数据,数据是主线程给的,主线程的数据来自标准输入stdin,
得到数据之后,告诉另外的线程:平时不要休眠了,来接收通知。
但是这个函数一直在消耗的CPU的资源,一直判断等待通知。(top命令查看)
信号量
所以不能这样操作,等让线程休眠。 ---- 使用信号量!
主程序得到数据后,通过信号量来唤醒这个线程。
性能得到改进。
但是还有缺点:
接收线程在打印的时候,主线程一直是在运行的,所以会出现打印一半的时候,前半截是老数据,后半截是新数据。
互斥量
----增加互斥量,另外的线程在访问buf打印的时候,主线程就不能访问buf了(即就不要输入了)。
也就是说想访问buf先锁一下:
同步互斥
这样的话我就有时间在另外线程中,获得互斥量去处理打印Buf了。
另外一种互斥的方法---------同步互斥(条件变量)
首先获得互斥量;
等待要件成立,如果发现条件没成立,就释放互斥量,就继续等待。
文章来源:https://blog.csdn.net/qqmrchen124/article/details/135068290
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!