问题标签 [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 投票
1 回答
1243 浏览

concurrency - seda 和 actor 模型本质上是等价的吗?

SEDA 本质上是一组通过队列相互通信的独立“服务”,可以进一步抽象为消息传递。

Actor模型是一组独立的函数,它们通过消息传递相互通信。

它们本质上不是等价的吗?我错过了一些关键的区别吗?

0 投票
1 回答
1589 浏览

firefox - 如何在 Firefox 扩展中实现消息传递?

我有一个文件覆盖overlay.xulbrowser.xul. 我想以与 chrome 扩展中实现的方式类似的方式实现消息传递。

chrome.manifest-

我如何注册content_script.js在我的情况下是overlay.js哪个?

Overlay.xul -

现在在我的内部我overlay.js正在使用 -

而且是background.js——

  • 消息传递的正确语法是什么?
  • 如何配置内容脚本和浏览器脚本之间的连接?
0 投票
3 回答
1125 浏览

objective-c - 在类型为超类的变量上调用子类方法

我创建了一个名为Foo

和一个Foo名为的子类Bar

我正在尝试将对象Bar作为Foo对象存储在数组中,如下所示:

我这样做是因为我实际上有不止一个子类Foo(我不想全部列出)。当我从数组中抓取一个对象并将消息发送到对象以获取myString变量时,应用程序不执行任何操作。 例子:

我是否误解了“消息”的工作原理?我假设我可以向一个对象发送消息,并且无论它是否存在,它都会调用它。我需要以其他方式这样做吗?该数组将保存所有不同类型的Foo子类,我需要将它们存储在那里。

0 投票
1 回答
208 浏览

caching - Actor 并发模型和缓存

我们在软件中大量使用缓存。“put/get”数据存储的概念对应于“共享状态并发模型”,与消息传递并发(例如Actor)相比,它存在许多缺点。

我们如何协调消息传递模型和缓存?还是我们都将永远被共享状态并发所困?

0 投票
2 回答
826 浏览

multithreading - 线程 - 消息传递

我试图找到一些资源以获得最佳性能并通过消息传递进行扩展。我听说通过值而不是引用传递消息可以具有更好的可扩展性,因为它适用于 NUMA 样式设置并减少了对给定内存地址的争用。

我会假设基于值的消息传递仅适用于“较小”的消息。“更小”的定义是什么?在什么时候引用会更好?有人会以这种方式进行流处理吗?

我正在为这类问题寻找一些有用的提示或资源。

谢谢 :-)

PS 我在 C# 中工作,但我认为这对于这类设计问题并不重要。

0 投票
2 回答
756 浏览

c# - 像 C# 中的 erlang 一样的消息传递,具有非常大的数据流

这是一个关于消息传递的问题。这特别涉及用 C# 编写的内部应用程序。但它有一个类似于 erlang 的本土“消息传递”系统。

好的,我们希望可以向 erlang 人员或文档学习,以找到解决几个消息传递挑战的优雅解决方案。但是很可惜,在在线阅读了 erlang 文档和论坛之后,这些主题似乎没有得到解决——我们可以找到。

所以问题是:在erlang中,向进程发送消息的队列何时满?erlang 是否处理队列满的情况?或者 erlang 中的消息传递队列是无限的 - 仅受系统内存限制?

好吧,在我们的系统中,它涉及处理金融数据流,可能会从磁盘读取数十亿个信息元组,每个金融信息元组在金融世界中被称为“tick”。

因此有必要对我们系统中每个“进程”的队列大小进行限制。我们在每个队列中任意选择最多 1000 个项目。现在,这些队列很快就完全被滴答消息填满了。

问题在于,除了滴答声之外,进程还需要相互发送其他类型的消息,但是滴答声会填满队列,从而阻止任何其他类型的消息通过。

作为“创可贴”解决方案(这是混乱的),每个消息类型允许每个进程有多个队列。所以一个进程会有一个tick queue,一个command queue,一个fill queue,等等。

但是 erlang 通过为每个携带不同消息类型的“进程”设置一个队列,看起来更加简洁。但同样,它如何处理队列被仅一种消息类型的洪水所占据?

所以也许这是一个关于erlang内部的问题。erlang 内部是否对队列中的消息类型有单独的限制?还是它在内部对每种类型的消息都有一个单独的队列?

无论如何,发送进程如何知道队列太满而无法接收某些类型的消息?发送失败?这是否意味着在 erlang 中无法发送错误处理变得必要?

在我们的系统中,它会跟踪队列何时满,然后阻止任何进程运行,该进程将尝试添加到满队列,直到该队列有更多空间。这避免了混乱的错误处理逻辑,因为进程一旦被调用,就保证有空间发送一条消息。

但同样,如果我们将多种类型的消息放在同一个队列中。其他必须通过的消息类型将被阻止。

我可能错误地认为 erlang 不是为处理这种情况而设计的,因此它可能无法解决队列被大量单一消息类型填满的问题。

但是我们希望有人知道如何回答这一点,以提供涵盖此特定场景的良好参考信息或书籍。

0 投票
1 回答
582 浏览

javascript - 卡在消息传递 background.html >> contentscript.js (chrome 扩展)

我知道它已经来过千百次了,但我现在被困住了。我已经阅读了大量答案并研究了 code.google.com 但没有成功。我正在尝试以 chrome 扩展名从background.htmlto发送请求contentscript.js。我设法让它以另一种方式工作。

里面的代码background.html

里面的代码contentscript.js

应该没问题,manifest.json因为通信正在向后工作并且其他任何东西都可以正常工作。谢谢!

0 投票
2 回答
2090 浏览

c++ - Message passing between two programs

Currently I have two standalone C++ programs, a master and a slave. The master writes some data to shared memory, using boost::interprocess, and then launches the slave, which is able to read from the memory.

What I would like to do is to have the slave constantly running, and for the master to send a message to the slave when the memory has been written to and is ready to be read from.

The only way I can think to achieve the same thing is for the slave to constantly check the shared memory for the presence of an object, and when it is detected read from it and delete it. However, this doesn't seem optimal.

Is there a nicer way of achieving the same thing?


Background: This is a continuation of my previous question here...

0 投票
6 回答
104854 浏览

python - 用 Celery 取消已经执行的任务?

我一直在阅读文档并进行搜索,但似乎找不到直接的答案:

你可以取消已经执行的任务吗?(因为任务已经开始,需要一段时间,中途需要取消)

我从Celery FAQ的文档中找到了这个

但我不清楚这是否会取消排队的任务,或者它是否会杀死工作人员上正在运行的进程。感谢您提供的任何光线!

0 投票
1 回答
817 浏览

mpi - MPI 功能“侦听”节点是否准备就绪

我希望有一个“父”节点来生成数据并将其传递给工作节点,这些节点将对数据进行必要的计算。

我希望父节点坐下来“听”工作节点何时告诉他他已准备好接收数据。

实现这一目标的最佳方法是什么?我应该为此使用哪些功能?如果我使用 MPI_Send(...) 那么我必须提前知道我将数据发送到哪个节点。如果我使用 MPI_Recv(...) 接收来自等级“i”的消息说他准备好了,那么当其他节点可能试图时,父节点不会在给定等级上等待说他准备好了也发送“就绪”消息?

我正在寻找一种功能,我的父节点可以在其中侦听任何传入消息,或者以某种方式知道何时可以安全地将消息发送到给定的工作节点。