如何确保VxWorks结构操作中的原子性?

瓦乔拉

我在VxWorks中编写了涉及多个任务的代码。他们工作顺利。

在那个时候,我并不关心原子操作。但是后来,在查阅文献时,我发现当多个线程访问相同的变量时,原子操作很重要。

我有多个任务使用了结构,并且工作正常。但是从现在开始,我要小心。因此,有什么方法可以确保结构操作在原子上是安全的。

伊利亚·克拉萨文(Ilya Krasavin)

如果我理解正确,那么您的问题就很笼统了。您可以通过以下方式管理对资源(例如全局变量)的并发访问:

  1. 使用信号量;每个任务在使用该资源之前先“获取”信号量,然后再“给予”它,二进制信号量是达到此目的的最佳选择
  2. 您可以在使用该资源执行操作之前先“锁定”任务,然后再对其进行“解锁”,这样可以确保不重新安排任务的时间,并且在解锁任务之前不会运行其他任何任务
  3. 对于可以从中断处理程序访问资源的情况(因此N1和N2保护可能不起作用),您可以先禁用所有中断,然后再启用它们。

最后一种方法将始终有效,但是如果您长时间禁用中断,则操作系统可能会停止正常工作(例如,通信可能会在超时时失败)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

确保树状结构中的失效原子性

来自分类Dev

如何确保系统级操作是原子的?有什么模式吗?

来自分类Dev

如何确保Spring Boot中方法执行的原子性?

来自分类Dev

捕获形式中的所有错误并确保原子性

来自分类Dev

Couchbase(Java SDK)中Add操作的原子性

来自分类Dev

Couchbase(Java SDK)中的Add操作的原子性

来自分类Dev

保存模型时确保原子性

来自分类Dev

Java ConcurrentHashMap操作原子性

来自分类Dev

Go中的原子操作是否确保其他变量对其他线程可见?

来自分类Dev

Sequelize中的原子操作

来自分类Dev

Sequelize中的原子操作

来自分类Dev

如何对ArangoDB中的文档字段执行原子操作?

来自分类Dev

CPU如何实现原子性?

来自分类Dev

C中的“ ++”操作是原子的吗?

来自分类Dev

CUDA中的原子操作失败

来自分类Dev

mysql中数据的原子性

来自分类Dev

MongoDB GridFS中是否为CRUD操作保留了原子性?

来自分类Dev

在C#中对字符串的读/写操作的原子性

来自分类Dev

如何在VxWorks Shell中定义数组?

来自分类Dev

OnBackStackChangedListener的“原子性”(片段核心的深层内部结构)

来自分类Dev

如何在MySQL中的一个原子操作中重命名两个表

来自分类Dev

如何实现一系列操作的“原子性”?(不一定与多线程相关)

来自分类Dev

如何实现一系列操作的“原子性”?(不一定与多线程相关)

来自分类Dev

CAS指令如何保证原子性

来自分类Dev

百胜原子性如何得到保证?

来自分类Dev

在Linux中,waitpid()是原子操作吗?

来自分类Dev

猫鼬中的多个原子操作

来自分类Dev

R中的数据操作:“ X”必须是原子的

来自分类Dev

连续内存块中的C ++原子操作

Related 相关文章

热门标签

归档