嵌入式学习第二阶段Linux开发多线程
多线程相关知识
木下 似水
苏州大学大三软件工程在读。
展开
-
Linux线程的信号
线程信号:上一节中我们学了可以用锁来帮助控制线程的执行与否,那么我们经常想要先让一个线程先执行,等他执行之后另一个线程紧接着执行,这个时候就可以搭配cond这个信号来使用锁。首先还是要看手册,声明一个cond量并在主函数里初始化,来看代码:线程1中,第一句话就是等待cond信号,否则它就堵塞在这里不执行任何东西。线程2中不断打印data的值,打一次data加一次,当data==3时,传信号cond告诉别的线程我执行完了,收到信号的可以往下执行你的任务了。线程1收到了cond信号,打印出自己的东原创 2021-04-04 11:19:28 · 171 阅读 · 0 评论 -
Linux线程出现“死锁”现象
“死锁”所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 因此我们举个例子来描述,如果此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。下图:线程1先拿到了锁1,沉睡一秒,这时线程2拿到了锁2,线程1 醒了后又想去拿锁2,可是锁2已经被拿走了,拿不到这把锁就要堵塞在这里,线程2 同样的原因也拿不到锁1,也堵塞,造成了线程无法执行。所以在运用锁的时候一定要注意其中原创 2021-04-04 10:54:04 · 220 阅读 · 0 评论 -
Linux线程间互斥锁
互斥锁在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同时(还没有打印完),别人刚好也在此刻使用打印机打印东西,如果不做任何处理的话,打印出来的东西肯定是错乱的。 在线程里也有这么一把锁——互斥锁(mutex),互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即上锁( lock )和解锁( unlock )。简单来说,就是一个线程在执行他的代码段前给自己上一把锁,在打开这把锁之前,其他线程都不要想要执行原创 2021-04-04 01:30:57 · 160 阅读 · 0 评论 -
Linux线程之间内存共享
内存共享:一个进程的不同线程间内存是共享的,来看这样一段代码:可以看到,我创建两个线程,分别执行func1,func2,它们都不断地打印data的值,并不断的加1,如果内存不共享,他们的data值应该是独立的,而我们来看看结果结果可以看见,两个线程的data值是连续的,也就是说data是两个线程间共同的值,它们共享data这个变量。(师上官可编程)...原创 2021-04-04 00:09:36 · 961 阅读 · 2 评论 -
Linux线程的相关概念
学习这篇文章中有关线程的相关知识。链接: https://www.cnblogs.com/xiehongfeng100/p/4620852.html.进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控原创 2021-04-03 23:30:08 · 79 阅读 · 0 评论