一、信号量的简介
信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。其中,“同步”指的
是任务间的同步,即信号量可以使得一个任务等待另一个任务完成某件事情后,才继续执行;
而“有序访问”指的是对被多任务或中断访问的共享资源(如全局变量)的管理,当一个任务
在访问(读取或写入)一个共享资源时,信号量可以防止其他任务或中断在这期间访问(读取
或写入)这个共享资源。
举一个例子,假设某个停车场有 100 个停车位(共享资源),这个 100 个停车位对所有人
(访问共享资源的任务或中断)开放。如果有一个人要在这个停车场停车,那么就需要先判断
这个停车场是否还有空车位(判断信号量是否有资源),如果此时停车场正好有空车位(信号量有资源),那么就可以直接将车开入空车位进行停车(获取信号量成功),如果此时停车场已经没有空车位了(信号量没有资源),那么这个人可以选择不停车(获取信号量失败),也可以选择等待(任务阻塞)其他人将车开出停车场(释放信号量资源),让后再将车停入空车位。
在