嵌入式软件开发的并发、检查、评审、测试及问题跟踪
1. 并发控制与互斥锁
在多任务系统中,为了确保对共享资源的安全访问,常常会使用互斥锁(Mutex)。以下是使用互斥锁的示例代码:
GetMutex(&SharedDataMutex);
// now we own the lock
… use SharedData as much as we like …
ReleaseMutex(&SharedDataMutex); // now someone else can use the data
GetMutex() 函数的工作原理较为复杂。当共享资源未被锁定时( Mutex 为 0,即 UNLOCKED ),会将 UNLOCKED 值存入 InitialValue ,并将 Mutex 设置为 LOCKED ,从而获取锁。若共享资源已被锁定( Mutex 为 1,即 LOCKED ),尝试锁定会失败,当前任务需等待其他任务释放锁。
为了保证对 Mutex 的读取和设置操作的原子性,会使用 DisableInterrupts() 和 EnableInterrupts() 函数来禁用和启用中断。在单 CPU 系统中,若获取互斥锁
超级会员免费看
订阅专栏 解锁全文
88

被折叠的 条评论
为什么被折叠?



