Go 支持易失性/非易失性变量吗?

2024-01-08

我是这门语言的新手,所以请耐心等待。

我很好奇 GO 如何处理线程可用的数据存储,从某种意义上说,非局部变量也可以是非易失性的,例如在 Java 中。

GO 有通道的概念,从本质上讲,线程间通信意味着它绕过处理器缓存,直接读/写堆。

另外,在 go lang 文档中没有找到任何对 volatile 的引用。


TL;DR:Go 没有关键字来使变量对于多个 goroutine 写入/读取它是安全的。使用sync/atomic包为此。或者更好不要通过共享内存进行通信;相反,通过通信来共享内存 http://blog.golang.org/share-memory-by-communicating.


Two answers for the two meanings of volatile http://www.drdobbs.com/parallel/volatile-vs-volatile/212701484 volatile Ven diagram

.NET/Java并发性

部分摘录自Go内存模型 http://golang.org/ref/mem.

如果一个 Goroutine 的效果必须由另一个 Goroutine 观察, 使用同步机制,例如锁或通道 通信以建立相对顺序。

例子之一来自同步不正确 http://golang.org/ref/mem#tmp_9部分是繁忙等待值的示例。

更糟糕的是,不能保证写入完成会永远 由 main 观察,因为之间没有同步事件 两个线程。 main 中的循环不能保证完成。

事实上,这段代码(play.golang.org/p/K8ndH7DUzq http://play.golang.org/p/K8ndH7DUzq)永远不会退出。

C/C++ 非标准内存

Go 的内存模型没有提供解决非标准内存的方法。如果您可以对设备的 I/O 总线进行原始访问,则需要使用汇编语言或 C 语言将值安全地写入内存位置。我只需要在设备驱动程序中执行此操作,这通常会阻止使用 Go。

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

Go 支持易失性/非易失性变量吗? 的相关文章

随机推荐

  • BLE 设备可以充当信标吗

    这可能是一个错误的问题 但只需要知道这是否可行 对于我们的一款 BLE 设备 制造商数据是使用使用 peripheral advertisement manufacturerData manufacturerData
  • Json 架构文件不会在 BigQuery Python API 中执行

    我在使用 Bigquery Python API 时遇到问题 这是我执行脚本时的堆栈跟踪 Traceback most recent call last File createTable py line 17 in
  • 当目标(后端)应用程序在同一 EC2 的多个端口上运行时的 AWS ELB

    我有 2 个相同 Web 应用程序的实例在端口 8080 和 8081 上运行 我需要使用 ALB CLB 进行负载平衡 这在旧的 apache Web 服务器中曾经是一件简单的事情 要求是对下面的实例进行负载平衡 实例 1 Web 应用程
  • 在图像上使用文本塑造形状

    所以我想使用 CSS 在图像上放置一个三角形 确切地说是一个包含一些文本的三角形 像这样的事情 https sketch io render sk 11fa7e2aeba09cb08372f831f84d9af2 jpeg https sk
  • 在React JS中实现状态变化时的过渡效果

    我的 React 页面上有一张图像 当状态更新为新图像时我想执行以下过渡效果 原始图像应该放大和淡出 新图像还应该放大和淡入 效果应该类似于穿过墙壁到达新场景 我怎样才能在 React 中做到这一点 正如 pgsandstrom 提到的 反
  • 使
  • 元素拉伸得比包含的
  • 目前 我正在开发一个工作布局 但我对动态下拉菜单有点困惑 我在 li 元素中使用子 ul 该元素将显示导航链接的子项 但上面的 li 因此是主要的 您将鼠标悬停在其上以查看子项 延伸到 ul 的长度 当然是由其中的 li 元素的宽度定义的
  • 如何使用KeyEventDispatcher

    我一直在尝试制作一个 Pong 克隆作为初学者的项目 但我遇到了障碍 我已经设法达到键盘支持的目的 但是键盘重复延迟开始出现 我还没有找到任何可用的方法来使用 KeyEventDispatcher 它甚至不会启动dispatchKeyEve
  • 使用 boto3 列出 100 多个堆栈

    我们需要列出所有处于 CREATE COMPLETE 状态的堆栈 在我们的 AWS 账户中 我们有超过 400 个这样的堆栈 我们为此编写了以下代码 stack session session client cloudformation l
  • 正向回顾与非捕获组:不同的行为

    我使用 python 正则表达式 remodule 在我的代码中并注意到在这些情况下的不同行为 re findall r s a z a xyz b abc non capturing group results in a xyz b ab
  • QT/C++ - 从不同的类访问 MainWindow UI

    我是 C 和 Qt 的初学者 所以这也许是微不足道的 当然感觉应该很简单 但我已经寻找答案几个小时了 但找不到解决方案 我正在制作一个简单的棋盘游戏 其中 MainWindow 的 ui 用 QtDesigner 制作 包含游戏板的画布 Q
  • 如何向列表添加多种数据类型

    我的清单如下 var serie line new name series name data new List
  • 函数构造函数与函数语句

    today 我读过我们有一种通过函数构造函数声明函数的方法 http www tutorialspoint com javascript javascript function constructors htm 但我从未见过使用的实际实现F
  • 敲除无法处理绑定“foreach”

    我是 Knockout 的新手 我正在构建一个实际上是大型计算器的应用程序 到目前为止 我在一个页面上运行了两个淘汰赛实例 一个实例工作得很好 但另一个实例完全损坏并且似乎根本无法注册 下面是我的 Javascript fetchYear
  • 使用 Springfox 在 Swagger UI 文档中添加标头参数

    我想在我的 Rest 服务的自动生成的 swagger ui 文档中添加一个标头参数字段 我使用 Spring 和 Springfox public ResponseEntity
  • 在 Objective-C 中将小数转换为分数?

    我试图将小数点后的所有内容显示为分数 找不到关于 Objective c 的太多关于如何实现这一点的信息 我在用double对于我的变量格式 不确定这是否重要 这就是我格式化答案的输出的方式 theTextField setText NSS
  • Rails 4 - 如何自动检测用户的位置并将其显示在网络应用程序上?

    我目前有一个正在运行的应用程序 我希望 Rails 通过 IP 地址检测访问者的位置 并在我的网站主页上显示城市和州 例如 它将显示 Hello Name from City State 访客无需输入任何内容 我知道 GeoIP 和地理编码
  • R中将长列表分成指定长度的短列表

    这与之前的一个问题密切相关here https stackoverflow com questions 45663125 divide long list into shorter lists in r 然而我需要一些稍微不同的东西 我有一
  • ASP.NET MVC - 将 JSON DateTime 传递到控制器而不映射到控制器参数

    我正在使用 jQuery 日历来显示事件 该日历旨在从服务器提取数据 在初始化时 日历会触发 AJAX 请求以获取事件对象数组 json 编码 到目前为止一切都很好 但是 此请求包含 JSON 编码的日期和时间 至少我的实现是这样 代码如下
  • 反应式形式不接收默认输入值

    我正在使用 Angular 并且有一个用于编辑项目的反应形式 当我打开组件进行编辑时 输入会正确加载对象的值 但如果我不单击输入并更改值 则反应形式的值将为空 我的代码在这里
  • Go 支持易失性/非易失性变量吗?

    我是这门语言的新手 所以请耐心等待 我很好奇 GO 如何处理线程可用的数据存储 从某种意义上说 非局部变量也可以是非易失性的 例如在 Java 中 GO 有通道的概念 从本质上讲 线程间通信意味着它绕过处理器缓存 直接读 写堆 另外 在 g