Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多个线程如何调用同一个服务线程?_Java_C++_Multithreading_Server - Fatal编程技术网

Java 多个线程如何调用同一个服务线程?

Java 多个线程如何调用同一个服务线程?,java,c++,multithreading,server,Java,C++,Multithreading,Server,问题 该软件在一台装有Linux的DELL服务器上运行 语言可以是C++,java或python。< /p> 线程A和线程B都将任务分配给服务线程。当接收任务时,服务线程将把任务放在自己的任务队列中。当线程空闲时,它将执行任务并根据发送请求的人将任务结果返回给线程A或线程B 线程A的优先级高于线程B 我的想法 它与socket编程中的服务器/客户机非常相似。然而,由于该软件运行在同一台服务器上,所以对我来说,TCPIP似乎不是一个好的解决方案 另一个想法是为此使用公共数据库,如redis

问题

  • 该软件在一台装有Linux的DELL服务器上运行

  • <>语言可以是C++,java或python。< /p>
  • 线程A和线程B都将任务分配给服务线程。当接收任务时,服务线程将把任务放在自己的任务队列中。当线程空闲时,它将执行任务并根据发送请求的人将任务结果返回给线程A或线程B

  • 线程A的优先级高于线程B

我的想法

  • 它与socket编程中的服务器/客户机非常相似。然而,由于该软件运行在同一台服务器上,所以对我来说,TCPIP似乎不是一个好的解决方案

  • 另一个想法是为此使用公共数据库,如redis。但Redis也在TCPIP上运行,我不确定这是否合适

  • 还有人建议使用服务DLL,线程a和线程B都可以直接调用服务DLL。但是,我没有同时为多个线程构建DLL的经验。这可能吗

我的问题是:如何以适当的方式实现这一点


信号量阻止服务线程从队列op.A(命名)
管道读取
或类似的操作肯定会起作用。使用DLL(或者更确切地说是共享库)在这里并没有真正的帮助,服务线程在内存中的位置并不能使它在其他线程之间共享[显然,它必须在同一进程的内存中才能成为同一进程中的线程,但共享库在这里根本没有帮助],正是你与线程通信的方式使它成为“共享的”。TCP/IP在同一台机器上工作得很好。@MatsPeterson你能解释一下管道吗?我试图寻找它,但不确定它的意思。谢谢!