Go 为什么没有 stackoverflows

2023-12-19

我在这个演示文稿中读到http://golang.org/doc/ExpressivenessOfGo.pdf http://golang.org/doc/ExpressivenessOfGo.pdf第 42 页:

Safe

- 没有堆栈溢出

这怎么可能?和/或 Go 如何避免这种情况?


这是一个称为“分段堆栈”的功能:每个 goroutine 都有自己的堆栈,分配在堆上 http://golang.org/doc/effective_go.html#goroutines.

在最简单的情况下,编程语言实现在每个进程/地址空间使用一个堆栈,通常使用称为push and pop(或类似的东西)并实现为从固定地址(通常是虚拟内存的顶部)开始的动态堆栈帧数组。

这(或曾经)很快,但并不是特别安全。当大量代码在同一地址空间(线程)中同时执行时,它会引起麻烦。现在每个人都需要自己的堆栈。但是,所有堆栈(也许除了一个堆栈)都必须是固定大小的,以免它们彼此重叠或与堆重叠。

然而,任何使用堆栈的编程语言都可以通过以不同的方式管理堆栈来实现:通过使用列表数据结构或类似的数据结构来保存堆栈帧,但实际上是在堆上分配的。在堆被填满之前不会发生堆栈溢出。

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

Go 为什么没有 stackoverflows 的相关文章

随机推荐

  • 如何将 ssis 包从 Dev 传输到 Prod?

    我正在尝试使用配置文件将我的包移至生产环境 但文件仅部分更改 结果仍发送到 DEV 服务器 有人知道该怎么办吗 如果不访问配置文件 就很难找出问题的原因 我建议您使用引用环境中数据库的包配置 然后可以使用每个环境特有的环境变量来引用数据库本
  • React 我想将文本添加到react-chart-2工具提示中

    我正在使用react chart 2 将鼠标悬停在图表上可查看工具提示 我想在数字右侧显示 例如 30 如何将 字符添加到工具提示中 另外 如何将 left 值设置为最小值 0 和最大值 100 code https codesandbox
  • 禁止 Google 表格 vlookup 返回 #N/A

    我有一个 Google 表格 example https docs google com spreadsheets d 1rEXibEn LbaezSrjYutBZtZNzINGbQool0 HPLWzKy4 edit usp sharin
  • 当用户单击网站上的下载链接时,如何自动启动 android apk 安装过程

    根据developer android com http developer android com tools publishing publishing overview html publishing website http dev
  • 检索 SciPy 中稀疏线性求解器运行的迭代次数

    如何检索运行了多少次迭代以达到指定的容差级别SciPy 稀疏线性系统求解器 http docs scipy org doc scipy reference sparse linalg html 对于 Python 3 可以执行以下操作 de
  • php POST表单查询更新动态变量

    我有这个表格
  • Java中default关键字的作用是什么?

    Java 中的接口类似于类 但它是类的主体 接口可以包括只有抽象方法 and final领域 常数 最近看到一个问题 大概是这样的 interface AnInterface public default void myMethod Sys
  • 将经纬度坐标转换为 R 中的国家/地区名称

    我有一个纬度和经度坐标列表 并希望找出它们都居住在哪个国家 地区 我修改了一个答案这个关于美国各州的问题 https stackoverflow com questions 8751497 latitude longitude coordi
  • 对 webm 流的请求忽略范围标头

    我正在使用邮递员来测试连续的 webm 视频流 但范围请求被忽略 如果我尝试在同一服务器中使用图像 范围工作正常 如果我尝试将其作为固定长度的视频 效果很好 此链接包含我测试并工作的固定 webm 视频 https github com r
  • 如何在类文件中使用ScriptManager?

    我有一个使用 page clientScript 显示警报消息的常用方法 但后来我添加了更新面板 现在这段代码不起作用 所以我需要调用那里的脚本管理器 但我收到一些错误消息 表明它可以在那里访问 下面是我的 common cs 文件的 Sh
  • Win32:窗口在其整个生命周期中是否具有相同的 HDC?

    我可以在喷漆周期之外使用 DC 吗 我的windows DC能保证永远有效吗 我试图弄清楚我的控件的设备上下文 DC 的有效时间是多长 我知道我可以打电话 GetDC hWnd 获取我的控件窗口的设备上下文 但这是允许的吗 当 Window
  • 返回所有可以是多个的最大或最小值

    Enumerable max by and Enumerable min by return one当接收器中有多个最大 最小元素时 相关元素 大概是第一个 的 例如 以下内容 1 2 3 5 max by e e 3 仅返回2 或仅5 相
  • 如何将 B 列中的唯一值与 A 列中的奇异值连接起来

    我有两列代表一对多关系 我需要将其简化为 1 1 关系 其中 B 列中的许多内容由逗号连接 数据如下 zipcode neighbors 10001 10010 10001 10011 10001 10016 10001 10018 100
  • 部分正则表达式匹配

    我有一个正在测试字符输入流的正则表达式 我想知道是否有一种方法可以将正则表达式与输入进行匹配 并确定它是否是消耗整个输入缓冲区的部分匹配 IE 在正则表达式完成之前就到达了输入缓冲区的末尾 我希望实现决定是等待更多输入字符 还是中止操作 换
  • java JPanel 如何固定大小

    我想要一个可调整大小的面板 它始终具有固定深度的顶部绿色面板 即所有高度变化都应仅影响黄色面板 我下面的代码几乎没问题 只是绿色面板的大小略有不同 我该怎么做呢 Panel setLayout new BoxLayout Panel Box
  • 没有 gorm.Model 列的 Gorm 查询

    如何省略来自 gorm Model 的列 例如 创建日期 修改日期 考虑以下模型 type User struct gorm Model Firstname string Lastname string 现在我可以选择特定列 db Sele
  • 将新的 wifiConfiguration 添加到 wifiiManager 时总是得到 -1

    我正在创建范围内 wifi 的列表并将其显示给用户 我希望用户可以选择列表中的每个项目并插入密码以便连接到所选的 SSID 我写了这个方法来连接wifi private WifiConfiguration wifiConf WifiConf
  • Android SDK (Nexus 5X API28 x86) 在准备安装时停止

    我最近选择了 Android SDK 并尝试配置 SDK 来测试程序 并可能进行一些基本的 Java 应用程序编程 我的问题是它显然无法完成其设置 除了冻结之外 开始按钮呈灰色 并且我无法访问 Google Play 商店 我确实可以访问
  • git push origin master 拒绝用户 X,其中 x 不是本地 git 配置中的用户

    以此开头我对 git 和 github 很陌生 我以用户 zzz 在 github 上设置了一个存储库 并且它正确地列在我的本地 特定于存储库的 git 配置文件中 当我这样做时 该文件具有如下所示的条目 git config local
  • Go 为什么没有 stackoverflows

    我在这个演示文稿中读到http golang org doc ExpressivenessOfGo pdf http golang org doc ExpressivenessOfGo pdf第 42 页 Safe 没有堆栈溢出 这怎么可能