【发布时间】:2011-04-21 20:42:21
【问题描述】:
今天面试时被问到一个问题。首先他们问如何提供同步 线程之间。然后他们问如何提供进程之间的同步,因为我告诉他们,每个进程内部的变量不能与其他进程共享,所以他们要求我解释两个进程如何相互通信以及如何提供同步 它们之间,以及在哪里声明共享变量?现在面试结束了,但我想知道答案,谁能解释一下?谢谢。
【问题讨论】:
-
共享等待,例如命名的 Mutex 或 Semaphore,将在整个进程中同步调用。
-
真正的进程间通信高度依赖于平台。通常,您可以通过进程之间的网络套接字进行通信来避免这种情况。我个人很想从商业方面给出有点圆滑但高度正确的答案“购买兵马俑许可证”。 :)
-
ok,例如 Mutex 或 Semaphore,所以这意味着我们需要一个 semaphore 变量,以便这些进程可以访问它并检查它。那么在哪里申报呢?每个进程内部?
-
小心:Java 中不直接支持跨进程互斥锁和信号量。 Java
Semaphore类是一个纯进程内工具。更一般地说,大多数操作系统都为跨进程同步提供了信号量机制,但这并不容易从 Java 代码中访问。 -
我认为这个问题的重点是:这个问题是关于 Java 的,还是关于更一般的机制的?
标签: java multithreading process