Operating system 两个线程如何共享对象中声明为变量的内存?

Operating system 两个线程如何共享对象中声明为变量的内存?,operating-system,computer-science,Operating System,Computer Science,C程序可以使用全局变量在父线程和子线程中执行的函数之间共享内存,但是具有多个对象类的Java程序没有这样的全局变量。两个线程如何共享对象中声明为变量的内存 这个问题的可行答案取决于您所使用的语言 在理论上,进程是具有一个或多个线程的地址空间。线程是具有进程地址空间的执行流 由于进程中的所有线程共享相同的地址空间,因此它们可以无限制地访问彼此的变量(无论好坏)。一切都是共享的 一些编程语言,如Ada,对线程(Ada中的任务)有极好的支持。Java对线程的支持很少。经典C和C++完全没有语言支持。

C程序可以使用全局变量在父线程和子线程中执行的函数之间共享内存,但是具有多个对象类的Java程序没有这样的全局变量。两个线程如何共享对象中声明为变量的内存

这个问题的可行答案取决于您所使用的语言

在理论上,进程是具有一个或多个线程的地址空间。线程是具有进程地址空间的执行流

由于进程中的所有线程共享相同的地址空间,因此它们可以无限制地访问彼此的变量(无论好坏)。一切都是共享的

一些编程语言,如Ada,对线程(Ada中的任务)有极好的支持。Java对线程的支持很少。经典C和C++完全没有语言支持。 在像Ada这样的语言中,有真正的线程支持,有保护机制在任务之间交换数据。(但是您的Ada任务可以调用一个汇编语言例程,它可以绕过所有这些保护。)在C/C++中,您创建一个任务列崩溃,除非您明确计划避免它


在Java中,可以使用静态成员(包括静态成员函数)模拟可以安全访问的全局变量。

它们都需要访问相同的对象引用,就像一对方法一样。完成;)'C程序可以使用全局变量在父线程和子线程中执行的函数之间共享内存。他们还可以分享更多。还有很多。事实上,他们可以共享过程中的所有内容(好的,不总是安全的:)。