C++ int 操作在 mips 架构上是原子的吗

2023-12-19

我想知道我是否可以在不锁定 mips cpu 的情况下读取或写入共享 int 值(尤其是 Amazon 或 Danube)。我的意思是,如果这样的读取或写入是原子的(其他线程不能中断它们)。需要明确的是 - 我不想阻止线程之间的竞争,但我关心 int 值本身是否没有损坏。

假设编译器将所有 int 对齐到 cpu 字的边界,这应该是可能的。我使用 gcc (g++)。测试还表明它似乎工作正常。但也许有人肯定知道这一点?


使用 gcc 的内置原子操作,如果不支持它们,您将收到警告:http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html

看起来(至少)在硬件上可以进行加法/减法和测试的组合:http://rswiki.csie.org/lxr/http/source/include/asm-mips/atomic.h http://rswiki.csie.org/lxr/http/source/include/asm-mips/atomic.h

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ int 操作在 mips 架构上是原子的吗 的相关文章

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 为什么delete可以对const指针执行,而free却不能?

    我刚刚注意到指针传递给delete can be const合格而通过的人free不能 这对我来说确实是一个惊喜 在 C 中重载为operator delete应该有一个像这样的签名 void operator delete void p
  • 联合类型和额外属性

    当使用可以同时是联合类型情况的参数调用函数时 有没有办法让 TypeScript 编译器产生错误 例子 interface Name name string interface Email email string type NameOrE
  • Sails.js:如何使用水线连接多个模型?

    我有 3 个模型 大陆 国家和城市 我想加入这些模型以获得结果 大陆 js attributes continent Id type string primaryKey true continent Name type string des
  • 对象 Switch 语句的高性能 Objective C 替代方案

    我有一个函数 我想接受一个 NSString 和一个 int 参数 然后使用 switch 语句返回一个计算值 就像将 int 乘以某个常量一样 具体取决于提供的 NSString 内容 显然 switch 语句不适用于 Objective
  • 使用自定义视频编写器库编写音频的错误

    我正在尝试包装一小段方便的 C 代码 旨在使用 VFW 在 Windows 上生成视频 音频 C 库存在here http www farbrausch de 7Efg code aviwriter 描述说 使用 Windows 视频 因此
  • maven命令行如何为单个命令指向特定的settings.xml?

    是否可以指向特定的设置文件以覆盖 maven 用于单个命令的默认 settings xml 例子 mvn clean install Dparam gt pass specific settings file path as param t
  • Isabelle:向量中的最大值

    我想找到自然数向量中的最大值 然而 向量 即 vec 是与集合或列表不同的类型 我考虑了几个行不通的想法 比如调平或提升 vec 的类型或递归函数的定义 您建议采用什么解决方案来获得向量中的最大值 IMPORTS src HOL Algeb
  • 防止背景图像在更改时闪烁

    我正在使用按钮的背景图像并切换到不同的按钮 hover 当第一次鼠标悬停时发生切换时 背景颜色会短暂闪烁 我在这里将其设置为橙色 以便更明显 它与白色背景相同 或者如果我未设置背景颜色 但是 后续鼠标悬停时它不会闪烁 如何防止页面加载和第一
  • NSComparisonResult 和 NSComparator - 它们是什么?

    What is NSComparisonResult and NSComparator 我见过一种类型定义 类似这样 typedef NSComparisonResult NSComparator id obj1 id obj2 它和函数指
  • 如何在 Bootstrap 4 中的插入符下添加下拉箭头?

    我正在使用 Bootstrap 4 下拉选项 我想为左上角的下拉菜单添加一个向上箭头 在 Bootstrap 3 中 我们在按钮上有一个插入标记 因此我们可以将箭头添加到下拉菜单中 但在 Bootstrap 4 中 我们没有插入符号标记 使
  • Rails ORM 是否限制执行聚合的能力?

    我担心 Rails 是否可以处理金融应用程序所需的复杂聚合类型 特别是 ORM 是否可以有效地处理这些类型 在我正在考虑使用它的财务应用程序中 需要对以各种方式汇总的详细财务数据进行大量报告 如果没有 Rails ORM 的支持 我需要直接
  • 使 CSS 网格中的单行跨越所有列

    我怎样才能使 legend 跨越所有行 所以它会弄乱 fieldset 其样式为 3 列 CSS 网格 fieldset legend Personal Details legend fieldset fieldset legend
  • 编译器是否允许交错计算不同函数参数中的子表达式? [复制]

    这个问题在这里已经有答案了 我想知道以下情况 void f int a int b int a int x std cout lt lt func a lt lt std endl return 1 int b int x std cout
  • 如何在 Django 中测试空查询集?

    我正在 Django 中测试一个视图 该视图应该从对象中删除所有标签 为此 我使用这个断言 self assertEqual list Tag objects get for object Animal objects get pk 1 这
  • 根据 Airflow 中任务的输出字典动态生成多个任务

    我有一个任务 其中输出是一个字典 每个键中都有一个列表值 task task id gen dict def generate dict return output dict output look like this A aa bb cc
  • ASP.NET Web API,从 Flex FileReference 上传时 MIME 多部分流意外结束

    按照 ASP NET 上的教程 实现了一个用于执行异步文件上传的 Web API 控制器方法 如下所示 public Task
  • 帮助理解 Java 中的函数对象或函子

    有人可以解释什么是函子并提供一个简单的例子吗 函数对象就是这样 既是对象又是函数的东西 旁白 将函数对象称为 函子 是对该术语的严重滥用 另一种 函子 是数学中的核心概念 并且在计算机科学中具有直接作用 请参阅 Haskell 函子 该术语
  • 在 PHP 中应用差异

    我正在使用 Text Diff PEAR 包来比较短文本文档 其中 Text Diff 对象是使用每个文档中以空格分隔的单词列表创建的 我希望将差异存储在数据库中 然后在再次加载文件时应用它 有没有一种简单的方法来应用这个差异 或者我需要编
  • 应用程序根目录中“npm install”生成的许多不必要的文件

    通常 当我在应用程序目录中执行 npm install 时 会在 node modules 文件夹中生成一堆 npm 库文件 这是预期的 今天突然我开始看到许多文件在应用程序目录内部和节点模块外部生成 有人遇到过这个问题吗 如果是的话 有什
  • C++ int 操作在 mips 架构上是原子的吗

    我想知道我是否可以在不锁定 mips cpu 的情况下读取或写入共享 int 值 尤其是 Amazon 或 Danube 我的意思是 如果这样的读取或写入是原子的 其他线程不能中断它们 需要明确的是 我不想阻止线程之间的竞争 但我关心 in