【问题标题】:Can a single thread be shared among multiple processes ? If yes how?单个线程可以在多个进程之间共享吗?如果是怎么办?
【发布时间】:2015-08-24 17:36:05
【问题描述】:

每个进程可以有多个线程,但是是否允许单个线程可以在多个进程之间共享?我很困惑,我将这与紧密耦合的多处理器联系起来,其中内存在多个处理器之间共享.

在紧密耦合的多处理器中:内存是共享的 在松散耦合的多处理器中:分布式内存

如果我想错了方向,请纠正我。

【问题讨论】:

  • 你想错了方向。一个线程属于一个进程。
  • 不是我所知道的任何现代操作系统或编程语言。没有什么可以阻止它。只是通常不这样做。
  • 线程由进程生成并拥有。它不能被共享。有很多安全考虑使这样做有点像噩梦。最好将线程状态保存在另一个进程可以访问的地方。
  • 您的意思是“处理器”,而不是“进程”?
  • @RobertMcKee 想象一个存在于多个湖泊中的岛屿。没有什么能阻止它......

标签: java multithreading operating-system


【解决方案1】:

是的,你是对的,你不小心走错了方向。

现在,首先回答您的困惑,无论是紧耦合还是松耦合的多核或单核处理器等,在 Java 中,一个线程将在其生命周期内属于同一个进程

  • 线程所属的进程可能会被处理器暂停,以便为其他进程留出时间,这意味着该线程也处于非活动状态。
  • 线程可能被进程停住,以赋予其他线程更高的优先级。这正是您所说的线程优先级。

您可以使用 Java 的 fork/join framework 来利用多核处理器,方法是将所有可用处理器用于线程执行。但同样在这种情况下,无论一个线程是由一个处理器还是其他处理器执行,线程都会紧紧地附着在它开始生命的进程中。

【讨论】:

    猜你喜欢
    • 2021-03-03
    • 2013-07-13
    • 1970-01-01
    • 2012-04-12
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2017-10-22
    相关资源
    最近更新 更多