本节介绍事件标志组解决资源间共享问题的原理与示例。

可能在你的印像中,事件标志组是用来等待与通知某些事件的发生,确实是这样。但是我们也可用于解决资源冲突问题,在这里我们将事件标志组看做是多个二值信号量的组合。 看到上面的文字,是否一下就明白了。是的,正是如此!

主要内容

工作原理

我们可以将事件标志组中的各个位看作是取值为0和1的”二值信号量”。只不过这些”二值信号量”共享事件标志组的同一等待队列。
事件标志组解决任务间资源共享问题 - 图1
使用事件标志组后,其效果和使用二值信号量相同。

嵌套问题

同二值信号量。

特性总结

同二值信号量。

重点难点

组合等待资源

当我们使用事件标志组时,可以利用其标志组组合的特性。即用标志组中的各个标志位分别代表1种资源,任务可组合选择等待其中所有/任务的1个/多个资源可用。
事件标志组解决任务间资源共享问题 - 图2
这种特点,是仅仅使用二值信号量难以办到的。

注意事项

常见问题