多个用户级线程堆栈的内存

2024-06-27

我想了解用户级线程堆栈的内存如何保存在内存中。我认为所有堆栈都会从页面边界开始......我是对的吗?用户级线程库如何确保某个线程的堆栈不会增长并与其他线程的连续页面边界堆栈重叠,因为所有堆栈页面都是连续的......


如果您坚持使用连续的堆栈,那么是的,为单独线程分配的堆栈之间可能会发生冲突。在虚拟空间较小的机器上,这种情况比在虚拟空间较大的机器上更有可能发生,并且当某些堆栈可以变得任意大时,这种情况更有可能发生。

最常见的操作系统(Windows、Linux)假设线程堆栈不能很大(例如 1-10Mb),并且单个进程不能有很多线程(可能是数百个)。在这种情况下,如果您在计算状态之前知道需要多少个线程以及每个堆栈可以有多大,那么您就不会真正遇到问题。在这种情况下,您可以预先计算所有线程堆栈的放置位置,以便它们都适合,并且每个堆栈都有最坏情况的需求。

这很有效......非常好。但是,如果对堆栈的需求可以任意大,或者您事先不知道有多少个堆栈,那么预分配就不起作用。这确实会给使用这些操作系统的人带来麻烦。

See 为什么堆栈溢出仍然是一个问题? https://stackoverflow.com/questions/3217521/why-are-stack-overflows-still-a-problem来讨论这个问题。您也可以阅读我关于如何避免该问题的回复。 (提示:堆栈大小没有限制!)。

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

多个用户级线程堆栈的内存 的相关文章

随机推荐

  • 为什么我应该使用 $_GET 和 $_POST 而不是 $_REQUEST? [复制]

    这个问题在这里已经有答案了 除此之外 REQUEST从 cookie 读取 有什么理由我应该使用 GET and POST代替 REQUEST 这样做的理论和实践理由是什么 当我只想让用户的某些数据返回某些数据时 我使用 REQUEST 当
  • 有没有办法让 CVS 不会在 $Id: $ 等关键字替换上产生合并冲突

    我们目前使用 CVS 并在合并到主干之前在分支上开发新功能 有时我们会遇到由 CVS 关键字替换引起的合并冲突 因此 当查看冲突文件时 我们会看到类似这样的内容 lt lt lt lt lt lt lt collect logs conf
  • 您能否从 Jenkins 管道内部识别这是否是新分支的首次运行?

    是否可以从管道本身内部查看管道作业是否是新发现的分支的第一次运行 如果您可以获得一个作业的所有运行的列表 也许您可 以查看之前的运行是否为 0 次 从而知道这是第一次运行 Use env BUILD NUMBER env BUILD NUM
  • 如何在 Rails 中对不同用户建模

    Question 我有一个带有内置授权和身份验证逻辑的用户模型 现在我意识到我拥有三种不同类型的用户 我想存储每个人的不同信息 Rails 中处理这个问题的最佳方法是什么 基于当前阅读的想法 我看过 STI 但从我读到的内容来看 它是不合适
  • 将 numpy 数组转换为 numpy 数组的数组

    如何转换 numpy 数组a到 numpy 数组b以 num Pythonic的方式 理想情况下 解决方案应该适用于任意维度和数组长度 import numpy as np a np arange 12 reshape 2 3 2 b np
  • 是否可以在 ElasticSearch 的“_source”中包含“_id”

    通常ElasticSearch文档存储为 index some index type some type id blah blah score null source field a value a field b value b 查询数据
  • 在Java中获取计算机名称[重复]

    这个问题在这里已经有答案了 我想知道是否有办法在Java中获取计算机名称 我看过几个答案java net InetAddress 但我想知道是否有一种不使用网络的方法 作为一个附带问题 计算机名称是否只是一个网络事物 因此必须这样做 计算机
  • Backbone.js - 自定义设置器

    想象一个简单的骨干模型 例如 window model Backbone Model extend defaults name date new Date valueOf 我正在尝试找到一种方法 使模型始终以小写形式存储名称 而不管提供的输
  • invalidate方法有什么作用?

    什么是invalidate方法做在winform app Invalidate method附带六超载里面形成control class of System Windows Forms 名称空间 谢谢 Windows 窗体使用 GDI 进行
  • ARM(特别是移动)外设寻址和总线架构的解释?

    我首先要说的是 我不是该领域的专家 我的问题可能包含误解 在这种情况下 如果您纠正我并附上资源 以便我可以了解更多详细信息 我将很高兴 我试图弄清楚系统总线的方式以及移动设备中出现的各种设备 例如传感器芯片 wifi BT SoC 触摸屏等
  • 可达性更改通知应仅调用一次

    我在我的 swift 项目中使用了 Reachability 我在 AppDelegate 中有以下代码 NSNotificationCenter defaultCenter addObserver self selector reacha
  • 在动作之间传递对象数据

    我一开始遇到了一个关于我的一个jsp上的列表 下拉列表的问题 但现在我意识到我的主要问题是关于操作 页面之间的数据输入 老问题 https stackoverflow com questions 26871659 redirecting t
  • Windows Phone 反向地理编码以获取经纬度地址

    我正在使用以下服务参考从纬度和经度获取位置详细信息 http dev virtualearth net webservices v1 geocodeservice geocodeservice svc http dev virtualear
  • 更改Visual Studio 2010生成的exe文件的图标

    我目前正在 Visual Studio 2010 中创建一个应用程序 在构建项目以生成应用程序的输出后 我发现 exe 是使用默认图标构建的 有什么方法可以更改或使用我自己的图片作为 Visual Studio 2010 生成的 exe 文
  • 使用字典来键入一系列值[重复]

    这个问题在这里已经有答案了 我有一个 pandas 数据框 我想根据另一列的值在新列中创建类别 我可以通过这样做来解决我的基本问题 range range 0 5 Below 5 range 6 10 between range 11 10
  • Cosmos DB 在同一查询上随机成功和失败,表示它们是跨分区,但实际上不是

    我有一个分区键为 flightConversationId 的集合 我正在做一个非常简单的查询 按分区键字段 SELECT from root WHERE root flightConversationId b36d13c0 cbec 11
  • 使用 Python SUDS 列出 SOAP 枚举的所有可能值

    我正在使用 SUDS 客户端连接到 SOAP 服务器 该服务器的 wsdl 包含许多枚举 如下所示
  • 在c#中使用OleDB读取excel文件?

    我正在构建一个程序来将 excel 文件读取到 dataGridView 中 using System using System Collections Generic using System ComponentModel using S
  • angular.js - 欧洲表示法中的十进制数字

    在 Angular 中 您可以使用货币过滤器来格式化数字 如下所示 service price currency 标准输出是 0 00 输出如何 0 00 欧洲符号 角支撑i18n位置标准 全球化 国际化 当涉及到数字格式时 Angular
  • 多个用户级线程堆栈的内存

    我想了解用户级线程堆栈的内存如何保存在内存中 我认为所有堆栈都会从页面边界开始 我是对的吗 用户级线程库如何确保某个线程的堆栈不会增长并与其他线程的连续页面边界堆栈重叠 因为所有堆栈页面都是连续的 如果您坚持使用连续的堆栈 那么是的 为单独