我今天在采访中被问了一个问题.首先,他们询问如何在线程之间提供同步.然后他们询问如何在进程之间提供同步,因为我告诉他们,每个进程内的变量都不能与其他进程共享,所以他们让我解释两个进程如何相互通信以及如何在它们之间提供同步,以及在哪里声明共享变量?现在面试结束了,但我想知道答案,有人能解释一下吗?谢谢.
我认为面试官可能没有使用正确的术语.进程在自己的空间中运行,并且在单独的答案中提到过,您必须使用特定于操作系统的机制来在进程之间进行通信.这称为进程间通信的IPC.
使用套接字是一种常见的做法,但根据您的应用程序而言可能非常低效.但是如果使用纯Java,这可能是唯一的选择,因为套接字是普遍支持的.
共享内存是另一种技术,但这是特定于操作系统的,需要特定于操作系统的调用.您必须使用类似JNI的东西来访问Java应用程序以访问共享内存服务.共享内存访问不同步,因此您可能必须使用信号量来同步多个进程之间的访问.
类Unix系统提供多个IPC机制,使用哪个机制取决于应用程序的性质.共享内存可能是有限的资源,因此它可能不是最好的方法.谷歌搜索这个主题提供了大量的点击,提供有关技术细节的有用信息.
归档时间: |
|
查看次数: |
9545 次 |
最近记录: |