问题标签 [message-passing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
12 回答
52917 浏览

java - Java: Is `while (true) { ... }` loop in a thread bad? What's the alternative?

Is while (true) { ... } loop in threads bad? What's the alternative?

Update; what I'm trying to to...

I have ~10,000 threads, each consuming messages from their private queues. I have one thread that's producing messages one by one and putting them in the correct consumer's queue. Each consumer thread loops indefinitely, checking for a message to appear in their queue and process it.

Inside Consumer.java:

The Producer is putting messages inside Consumer message queues at a rapid pace (several million messages per second). Consumers should process these messages as fast as possible!

Note: the while (true) { ... } is terminated by a KILL message sent by the Producer as its last message. However, my question is about the proper way to do this message-passing...

Please see the new question, regarding this design.

0 投票
5 回答
7280 浏览

java - Java:高性能消息传递(单一生产者/单一消费者)

我最初在这里问了这个问题,但我意识到我的问题不是关于 while-true 循环。我想知道的是,在 Java 中进行高性能异步消息传递的正确方法是什么?

我正在尝试做的...

我有大约 10,000 个消费者,每个消费者都从他们的私人队列中消费消息。我有一个线程一一生成消息并将它们放入正确的消费者队列中。每个消费者无限循环,检查消息是否出现在其队列中并处理它。

我相信这个术语是“单一生产者/单一消费者”,因为有一个生产者,每个消费者只在他们的私有队列上工作(多个消费者从不从同一个队列中读取)。

Consumer.java 内部:

生产者正在快速将消息放入消费者消息队列中(每秒数百万条消息)。消费者应该尽快处理这些消息!

注意:while (true) { ... }由 Producer 作为其最后一条消息发送的 KILL 消息终止。

但是,我的问题是关于设计此消息传递的正确方法。我应该为 messageQueue 使用哪种队列?它应该是同步的还是异步的?Message应该如何设计?我应该使用 while-true 循环吗?消费者应该是一个线程还是其他什么?10,000 个线程会慢到爬行吗?线程的替代品是什么?

那么,在 Java 中进行高性能消息传递的正确方法是什么?

0 投票
2 回答
1962 浏览

erlang - Erlang 如何在同一节点上的进程之间传递消息?

在节点之间,消息(必须)通过 TCP/IP 传递。但是,它们是通过什么机制在同一节点上运行的进程之间传递的?在这种情况下是否也使用 TCP/IP?Unix域套接字?“节点内”和“节点间”消息传递之间的性能差异是什么?

0 投票
4 回答
3917 浏览

erlang - Erlang 是否总是在同一节点上的进程之间复制消息?

Actor 消息传递语义的忠实实现意味着消息内容是从逻辑角度深度复制的,即使对于不可变类型也是如此。消息内容的深度复制仍然是actor模型实现的瓶颈,因此为了性能,一些实现支持零复制消息传递(尽管从程序员的角度来看它仍然是深度复制)。

Erlang 中是否实现零拷贝消息传递?在节点之间显然不能这样实现,但是在同一节点上的进程之间呢?这个问题是相关的。

0 投票
2 回答
1675 浏览

google-chrome-extension - 一个chrome扩展后台页面应该如何与多个内容脚本通信?

我无法与后台页面中的多个内容脚本进行通信。我的背景页面有如下代码:

我有如下内容脚本:

我的理解是我在后台页面中的回调应该被调用两次,一次来自每个内容脚本。看起来它有时只被调用了两次,而且几乎只有当我在if子句中有断点时才被调用。我在这里做错了吗?

谢谢,

-格雷格

0 投票
5 回答
10878 浏览

language-agnostic - 消息传递和方法调用有什么区别?

消息传递和方法调用之间是否有区别,或者它们可以被认为是等效的?这可能是特定于语言的;许多语言不支持消息传递(尽管我能想到的所有语言都支持方法),而那些支持的语言可以有完全不同的实现。此外,根据语言(C 与 Java 与 Lisp 与您最喜欢的语言)的不同,方法调用也存在很大差异。我相信这是与语言无关的。你可以用一个传递的方法做什么,而你不能用一个调用的方法做,反之亦然(用你最喜欢的语言)?

0 投票
2 回答
18052 浏览

multithreading - 与线程相比,Actor 如何工作?

与线程相比,Actor的工作原理有什么好的简短的解释吗?

一个线程不能被视为一个演员并向其他线程发送消息吗?我看到了一些差异,但对我来说并不是那么清楚。我可以通过不同地使用线程来使用任何语言的Actor吗?

0 投票
3 回答
101788 浏览

android - 如何发送和接收广播消息

我正在尝试在选项卡内的两个活动之间传递数据。我正在尝试使用sendBroadcast(). 设置断点后,我永远无法达到onReceive().

显现:

活动发件人:

活动接收器:

0 投票
1 回答
181 浏览

algorithm - 具有响应时间限制的异步请求-响应算法

我正在为 ebXML 消息传递应用程序编写消息处理程序。消息遵循请求-响应模式。这个过程很简单:Sender 发送一条消息,Receiver 接收消息并返回一个响应。到目前为止,一切都很好。

接收者收到消息后,会对消息设置一个响应时间 (TTR)。这可能是几秒钟到几小时/几天的任何时间。

我的问题是:Sender 应该如何处理 TTR?我需要这是一个异步过程,因为 TTR 可能会很长(几天)。我怎样才能以某种方式倒计时,但又不会长时间占用系统资源。可能有大量消息。

我最初的想法是有一个“等待”集合,其中添加了消息 ID,以及它的 TTR 到期时间。然后我会定期轮询收藏。当计时器到期时,消息 Id 将被移动到“过期”集合中,并且消息事务将被终止。

当 Sender 收到响应时,它可以检查“等待”集合中是否有匹配的已发送消息,并确认及时收到响应。然后将从集合中删除该消息以进行下一阶段的处理。

这听起来像一个强大的解决方案吗?我确信这是一个已解决的问题,但是关于这种算法的信息很少。我计划用 C# 实现它,但我认为在这个阶段实现语言有点无关紧要。

感谢您的输入

0 投票
1 回答
984 浏览

memory-management - MPI 程序中的内存分配

从节点中如何分配内存以执行 MPI 程序?从节点如何知道要保留的内存量?当从节点找不到它想要访问的数据时会发生什么?

这不是作业问题,而是我尝试过的一个问题,但在谷歌搜索中找不到