如标题所示,两个或多个线程如何共享它们已分配的堆内存?我一直在思考但无法理解两个线程如何实现此操作。以下是我对该过程的理解,可能有错误。
任何线程都可以通过调用系统调用来添加或删除堆上的一定数量的字节,并返回指向此数据的指针,这可能通过向线程可以将其复制到堆栈中的寄存器中写入实现。 因此,线程A和B可以随意分配任意数量的内存。但我不知道线程A如何知道线程B分配的内存位置。也不知道任何一个线程如何知道另一个线程的堆栈位置。多线程程序共享堆,我相信可以访问彼此的堆栈,但我无法理解如何实现这一点。
我尝试搜索这个问题,但只找到抽象掉细节的特定于语言的版本。
编辑:我试图不具体指出语言或操作系统,但我正在使用Linux并从低级别的角度(汇编)查看它。
任何线程都可以通过调用系统调用来添加或删除堆上的一定数量的字节,并返回指向此数据的指针,这可能通过向线程可以将其复制到堆栈中的寄存器中写入实现。 因此,线程A和B可以随意分配任意数量的内存。但我不知道线程A如何知道线程B分配的内存位置。也不知道任何一个线程如何知道另一个线程的堆栈位置。多线程程序共享堆,我相信可以访问彼此的堆栈,但我无法理解如何实现这一点。
我尝试搜索这个问题,但只找到抽象掉细节的特定于语言的版本。
编辑:我试图不具体指出语言或操作系统,但我正在使用Linux并从低级别的角度(汇编)查看它。