小编Lem*_*ism的帖子

两个或多个线程如何共享它们已分配的堆上的内存?

正如标题所说,两个或多个线程如何共享它们分配的堆上的内存?我一直在考虑它,我无法弄清楚他们是如何做到的.这是我对这个过程的理解,大概我错了.

任何线程都可以通过进行系统调用来添加或删除堆上给定数量的字节,系统调用返回指向此数据的指针,可能是通过写入线程然后可以复制到堆栈的寄存器.因此,两个线程A和B可以根据需要分配尽可能多的内存.但我没有看到线程A如何知道线程B分配的内存位于何处.我也不知道任何一个线程如何知道其他线程堆栈的位置.多线程程序共享堆,我相信,它可以访问彼此的堆栈,但我无法弄清楚如何.

我尝试搜索这个问题,但只发现了特定于语言的版本,这些版本抽象了细节.

编辑:我试图不是语言或操作系统特定,但我正在使用Linux,我从低级别的角度看待它,我想是汇编.

heap multithreading

14
推荐指数
1
解决办法
2万
查看次数

为什么将str封装在String而不是Box <str>中?

这并没有给我带来任何麻烦-我完全有能力使用String-但是否有任何原因str封装在其自己的特殊类型中,而不是封装在更一般的Box类型中?如果有原因的,那么答案可能会帮助我的模型如何与工作Box不同。

为什么str封装在内部String而不是内部Box<str>?仅仅是为了方便键入这样一个通用结构还是有更深层次的原因?

string smart-pointers rust

5
推荐指数
2
解决办法
121
查看次数

标签 统计

heap ×1

multithreading ×1

rust ×1

smart-pointers ×1

string ×1