Java内存模型中不同线程之间无法访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成,C++,python呢?

Java内存模型中不同线程之间无法访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成,C++,python呢?

我看到Java内存模型规定了线程的工作内存一说,线程对变量的所有操作,读取赋值等都必须在工作内存中进行,难道其他语言不是这个模型吗?

其他语言都是直接读取主存和写主存?

阅读 2.8k
2 个回答

内存模型是一个 模型 ,不是实际的内存架构。

C++ 内存模型里没有工作内存的概念。

1.目前的多线编程模型中,主要是两种类型,共享内存模型和消息传递模型两种。
2.其中共享内存模型是主流的主流,消息传递模型也有就是比较小众,据说Erlang是消息传递模型。
3.java的内存模型是解决多线程通信问题,共享内存模型,就是在主内存中的变量会拷贝一份变量副本到各自线程自己的工作内存中,线程之间的通信都会先通过更改主内存变量,然后读取更改后的主内存变量,达到所谓的通信目的
4.其中有个近年也算比较火的go语言,它是两种模式都支持,但是主要推荐的是消息传递模型

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题