动图:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/391491013ff8b6308db8fece163913d0.gif)
提前了解:
额外注意:for 以及 for中的sleep(1)
sem_wait以及sem_post中的sem是同步的,
一个执行,另一个阻塞在那里
等待sem_post对sem的++操作,将另一个阻塞的线程唤醒
这里的for 以及 for中的sleep(1), 都是人为的让两个线程去同步,有规律执行
如果没有sleep(1), 假设【callback】抢到了资源, 它在结束玩执行, 进行唤醒操作的时候,自身阻塞在那里的sem信号,就可能还会先于
【callback_1】抢到资源
所以这里的