- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
众所周知,一个ZeroMQ socket shall not be shared among application threads . context_t
但是实例可以。
我有一个多线程应用程序,我希望每个线程不时与 交换消息。 REQ/REP
-socket 交易对手(事件、异常等),取决于他们在做什么(他们在做非 ZeroMQ 的事情)。
给我发消息 REQ/REP
-socket 我使用以下函数(半 C++ 半伪代码):
sendMessage:
bool sendMessage(std::string s)
{
zmq::socket_t socket(globalContext(), ZMQ_REQ);
socket.connect("ipc://http-concentrator");
zmq::message_t message(s.size());
memcpy(message.data(), s.data(), s.size());
if (!socket.send(message))
return false;
// poll on socket for POLLIN with timeout
socket.recv(&message);
// do something with message
return true;
}
REP/REQ
个事务,包括一个 JSON 解码/编码,在用例的两侧)
最佳答案
Nota Bene: this answer was posted before O/P was changed from 20k TPS to 140k TPS on ipc:// transport-class
Q: Is there a more correct ZeroMQ-way of doing this?
A:Not easy to say what is "this" and what are the parameters of the "correctness"-metric
REQ
-AccessPoint 到
REQ/REP
-pattern 和相关的基于套接字的传输类对
REQ
施加了一些显着的开销。 - 端主机和
REP
-边。
Context()
-instance thread(s) ( ... 是的,这里的复数是正确的,因为一些高性能代码可能会受益于每个
Context()
实例使用多个 I/O 线程并通过明确定义的积极影响工作负载分布模式套接字与其各自的 I/O 线程处理程序之间的关联映射(以便以某种方式平衡,如果不能确定性地平衡,预期的 I/O 吞吐量,包括所有相关的开销)。
REQ/REP
可扩展的正式通信模式以其陷入外部无法解决的分布式内部死锁的风险而闻名。这总是需要避免的风险。缓解策略可能取决于实际用例的风险值(value)(需要认证医疗器械、金融科技用例、控制回路用例、学术研究论文代码或私有(private)爱好玩具)。
Ref.:
REQ/REP
Deadlocks >>> https://stackoverflow.com/a/38163015/3666197
Fig.1:
为什么使用天真的是错误的
REQ/REP
[App1]
时的所有情况
in_WaitToRecvSTATE_W2R
+
[App2]
in_WaitToRecvSTATE_W2R
主要是
REQ-FSA/REP-FSA
不可挽救的分布式相互死锁(两个有限状态自动机中的每一个都等待“另一个”移动)并且永远不会到达“下一个”
in_WaitToSendSTATE_W2S
内部状态。
XTRN_RISK_OF_FSA_DEADLOCKED ~ { NETWORK_LoS
: || NETWORK_LoM
: || SIG_KILL( App2 )
: || ...
: }
:
[App1] ![ZeroMQ] : [ZeroMQ] ![App2]
code-control! code-control : [code-control ! code-control
+===========!=======================+ : +=====================!===========+
| ! ZMQ | : | ZMQ ! |
| ! REQ-FSA | : | REP-FSA! |
| !+------+BUF> .connect()| v |.bind() +BUF>------+! |
| !|W2S |___|>tcp:>---------[*]-----(tcp:)--|___|W2R |! |
| .send()>-o--->|___| | | |___|-o---->.recv() |
| ___/ !| ^ | |___| | | |___| ^ | |! \___ |
| REQ !| | v |___| | | |___| | v |! REP |
| \___.recv()<----o-|___| | | |___|<---o-<.send()___/ |
| !| W2R|___| | | |___| W2S|! |
| !+------<BUF+ | | <BUF+------+! |
| ! | | ! |
| ! ZMQ | | ZMQ ! |
| ! REQ-FSA | | REP-FSA ! |
~~~~~~~~~~~~~ DEADLOCKED in W2R ~~~~~~~~ * ~~~~~~ DEADLOCKED in W2R ~~~~~~~~~~~~~
| ! /\/\/\/\/\/\/\/\/\/\/\| |/\/\/\/\/\/\/\/\/\/\/! |
| ! \/\/\/\/\/\/\/\/\/\/\/| |\/\/\/\/\/\/\/\/\/\/\! |
+===========!=======================+ +=====================!===========+
关于c++ - 每个线程或每个调用一个 ZeroMQ 套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41941702/
我使用下拉菜单提供一些不同的链接,但我希望这些链接在同一选项卡中打开,而不是在新选项卡中打开。这是我找到的代码,但我对 Javascript 非常缺乏知识 var urlmenu = docume
我对 javascript 不太了解。但我需要一个垂直菜单上的下拉菜单,它是纯 JavaScript,所以我从 W3 复制/粘贴脚本:https://www.w3schools.com/howto/t
我已经坐了 4 个小时,试图让我的导航显示下 zipper 接垂直,但它继续水平显示它们。我无法弄清楚为什么会发生这种情况或如何解决它。 如果有人能告诉我我做错了什么,我将不胜感激。我有一个潜移默化的
我正在尝试创建选项卡式 Accordion 样式下拉菜单。我使用 jQuery 有一段时间了,但无法使事件状态达到 100%。 我很确定这是我搞砸的 JS。 $('.service-button').
对于那些从未访问过 Dropbox 的人,这里是链接 https://www.dropbox.com/ 查看“登录”的下拉菜单链接。我如何创建这样的下 zipper 接? 最佳答案 这是 fiddle
我正在制作一个 Liferay 主题,但我在尝试设计导航菜单的样式时遇到了很多麻烦。我已经为那些没有像这样下拉的人改变了导航链接上的经典主题悬停功能: .aui #navigation .nav li
如果您将鼠标悬停在 li 上,则会出现一个下拉菜单。如果您将指针向下移至悬停时出现的 ul,我希望链接仍然带有下划线,直到您将箭头从 ul 或链接移开。这样你就知道当菜单下拉时你悬停在哪个菜单上。 知
我有一个带有多个下拉菜单的导航栏。因此,当我单击第一个链接时,它会打开下拉菜单,但是当我单击第二个链接时,第一个下拉菜单不会关闭。 (所以如果用户点击第二个链接我想关闭下拉菜单) // main.js
我正在尝试制作一个导航下拉菜单(使用 Bootstrap 3),其中链接文本在同一行上有多个不同的对齐方式。 在下面的代码中,下拉列表 A 中的链接在 HTML 中有空格字符来对齐它们,但是空白被忽略
我希望有人能帮我解决这个 Bootstrap 问题,因为我很困惑。 有人要求我在底部垂直对齐图像和其中包含图像的链接。 我面临的问题是他们还希望链接在链接/图像组合上具有 pull-right,这会杀
我正在构建一个 Rails 应用程序,并希望指向我的类的每个实例的“显示”页面的链接显示在“索引”页面的下拉列表中。我目前正在使用带有 options_from_collection_for_sele
我有以下 Bootstrap3 导航菜单 ( fiddle here )。我想设置“突出显示”项及其子链接与下拉列表 1 和 2 链接不同的链接文本(和悬停)的样式。我还希望能够以不同于 Highli
我对导航栏中的下拉菜单有疑问。对于普通的导航链接(无下拉菜单),我将菜单文本放在 H3 中,但是当我尝试对下 zipper 接执行相同操作时,箭头不在标题旁边,而是在标题下方。我决定用 span 替换
我是一名优秀的程序员,十分优秀!