Task之互斥信号量

杀马特。学长 韩版系。学妹 提交于 2020-12-18 04:09:39

    欢迎关注公众号 VxWorks567

多任务系统里经常面临一个问题:资源竞争。哪些资源呢?很多,例如外设、文件、数据等。当多个任务同时访问这些资源,就会发生冲突。例如下面这段代码

每调用一次函数myBufPut(),就会在数组myBuf[]中存入一个字符,这相当于一个入栈操作。在实际系统中,任务多了,任何情况都可能发生,假如有两个任务(T1、T2)都调用这个函数,就可能出现以下执行序列

T1刚把myBufIndex加了1,就被高优先级的T2抢占了。然后必须等T2退出就绪队列,T1才能继续执行。最后的结果是myBuf[0]里啥也没存,而myBuf[1]里先被存入'b',又被存入'a'。可见仅仅两行代码,就会出乱子。那如果某个资源只有一行代码呢?

本文分享自微信公众号 - 这里只有VxWorks(VxWorks567)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!