Linux 消息队列 - 多个接收者

2024-04-24

我最近一直在研究和研究 Linux 消息队列,并遇到了一些我不太明白为什么会发生的事情!

如果我们运行两个程序,它们都在无限 for 循环中使用 msgrcv() 来检查消息,然后发送两条消息,那么第一个运行的程序将收到第一条消息,第二个程序将收到第二条消息?如果您继续发送消息,那么它会在每个接收者之间交替发送。

显然,我知道,一旦一个程序读取了消息,它就会从队列中删除,但是如果它们都在无限检查,那么谁/如何决定谁将接收该消息?

任何帮助,将不胜感激!


简短的答案是内核决定。

长答案是,这是由the do_msgrcv()Linux内核内部调用 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=ipc/msg.c#l812。如果没有可用消息,则调用者将被放入队列中,直到有可用消息为止。它不能保证像您所描述的那样来回,因为这完全取决于每个的时间msgrcv()调用,但就您而言,它可能几乎一直都是这样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 消息队列 - 多个接收者 的相关文章

  • 在 PHP 中使用消息队列与普通 Cron 作业之间的区别

    我们有一个基于 PHP 构建的大型 Web 应用程序 该应用程序允许安排推文和墙贴 并且有从服务器发出的预定电子邮件 我所说的 计划 是指这些 PHP 脚本计划在特定时间运行cron 大约有 7 个 PHP 文件可以完成上述工作 我一直听说
  • 如何在Linux中为特定程序设置进程ID

    我想知道是否有某种方法可以在运行某些应用程序之前强制使用 Linux 的某些特定进程 ID 我需要提前知道进程ID 实际上 有一种方法可以做到这一点 自内核 3 3 设置了 CONFIG CHECKPOINT RESTORE 在大多数发行版
  • php.ini 更改,但在 Ubuntu 上无效

    我想更改 PHP 上传文件大小的限制 这是我的输出的一些信息phpinfo https www php net manual en function phpinfo php Configuration File php ini Path e
  • 在我的 Linux 机器上安装 lisp

    我使用 Vim 作为我的编辑器 Practical common Lisp 建议安装 Lispbox 我不知道如何使用 emacs 不知道如何用那个 T T 运行 lisp 代码 之后我找到了一个名为 limp vim 的 vim lisp
  • 为 bash 脚本创建应答文件

    我想为别人的 bash 脚本创建一个应答文件 当您运行 bash 脚本时 第一次安装该软件时 系统会询问您 5 个问题 我用的是yes script命令并且有效 它会自动应答yes对所有问题 不过我还是想回答一下no对于最后一个问题 有办法
  • 产生并处理软件中断

    有人可以告诉我如何在Linux下生成软件中断然后用request irq处理它吗 或者也许这是不可能的 您可以使用软中断来代替 您可以通过编辑 include linux interrupt h 来定义您的 sofirq 然后使用函数 ra
  • 使用 sed 反转输入顺序

    我有一个文件 我们将其命名为 a txt 该文件包含以下文本行 do to what 我想知道 SED 命令是什么来反转此文本的顺序 使其看起来像 what to do 我必须做某种追加吗 就像将 do 附加到 to 所以它看起来像 to
  • 从 createProcess 外部获取的句柄读取

    我正在尝试创建一个进程 并通过我在外部提供的句柄与其进行通信createProcess功能 stdOutH lt openFile logDir gt stdout log ReadWriteMode hSetBuffering stdOu
  • Java Linux 非阻塞套接字超时行为

    我有一个 Java 非阻塞服务器 它跟踪选择器中的所有套接字通道 然后我与服务器建立 500 个连接并定期发送数据 服务器接收到的每条数据都会回显给客户端 问题来了 测试工作了几个小时 然后突然逐渐地 服务器管理的所有套接字在尝试读取数据时
  • unix 命令行执行方式为 . (点)与没有

    在 unix 命令行中 通过简单地键入程序名称来执行程序与通过键入 点 后跟程序名称 例如 runme vs runme name来源称为文件name进入当前外壳 所以如果一个文件包含这个 A hello 然后 如果您获取它 之后您可以引用
  • x86-64 上这个语句有什么问题?

    该函数的目的是获取堆栈的起始地址 unsigned long find start void asm movq rsp eax 当我编译它时 出现错误 Error suffix or operands invalid for movq mo
  • 您可以bind()和connect() UDP连接的两端吗

    我正在编写一个点对点消息队列系统 它必须能够通过 UDP 运行 我可以任意选择一侧或另一侧作为 服务器 但这似乎不太正确 因为两端都从另一端发送和接收相同类型的数据 是否可以绑定 和连接 两端 以便它们只能彼此发送 接收 这似乎是一种非常对
  • 健全性检查 SSH 公钥? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已要求用户提供他们的公共 id rsa pub ssh 密钥 然后将其放入 home theiraccount ssh authorized key
  • Bash 变量:区分大小写?

    Bash shell 脚本区分大小写吗 是可变的date与DATE 是的 它区分大小写 就像 UNIX 的其余部分一样 date and DATE是两个不同的变量 makefile and Makefile是两个不同的文件 h and H是
  • 将尾部输出重定向到程序中

    我想使用 tail 作为标准输入向程序发送文本文件中的最新行 首先 我向程序回显一些每次都相同的输入 然后从输入文件发送尾部输入 该输入文件应首先通过 sed 处理 以下是我期望工作的命令行 但是当程序运行时 它只接收回显输入 而不接收尾部
  • 查找系统日志最大消息长度

    大多数 Unix 程序员都会习惯由syslog h 并且许多实现 例如 glibc 对发送给它的 syslog 消息的大小没有真正的限制 但通常对侦听的应用程序有限制 dev log 我想知道是否有人知道如何找到系统日志的最大消息大小 或者
  • /etc/php5/conf.d 文件夹中的 .ini 文件有什么用?

    我知道 ini 文件位于 etc php5 cli与 PHP 的 CLI 使用有关 文件位于 etc php5 fpm是关于 PHP 的 FastCGI FPM 方面 但是位于以下位置的 ini 文件又如何呢 etc php5 conf d
  • 获取当前时间(以小时和分钟为单位)

    我正在尝试从系统收集信息 并且需要获取当前时间 以小时和分钟为单位 目前我有 date awk print 4 输出如下 16 18 54 怎样才能把秒数去掉呢 提供格式字符串 date H M Running man date将给出所有格
  • 保护一个保存 MySQL 数据库的简单 Linux 服务器?

    这是一个初学者问题 但我浏览了该网站上的许多问题 但没有找到简单直接的答案 我正在设置一个运行 Ubuntu 的 Linux 服务器来存储 MySQL 数据库 该服务器尽可能安全非常重要 据我所知 我主要担心的是传入的 DoS DDoS 攻
  • 配置错误:无法链接到 boost_system

    我正在尝试在 Debian 上安装一个软件包 足球模拟器 2d 当我进入目录并运行时 configure 我得到以下信息 reza debian soccer rcssserver 15 0 1 configure checking for

随机推荐

  • Eslint 如何只更改代码行

    我需要一种方法来仅在分支上已更改的代码行或块上运行 ESLint 我们的想法是 我们有一个庞大的旧代码库 我们希望强制执行 ESLint 规则at least向前进 我在 CI 中实现了它 对 PR 中更改的所有文件进行了检查 但是人们在接
  • 如何使用 Maptiler 在 Google 地图中显示图块

    我有一个 1810x14871 png 文件 我想将其显示为 Google 地图上的图块 我正在使用Maptiler 我想向您确认几点 1 因为我想在谷歌地图上显示它 因此 在第一个屏幕中我必须选择 墨卡托瓷砖 对吗 2 在坐标系屏幕中 我
  • 目标加速度和子弹减速度随角度变化的弹丸目标预测

    我之前问过一个关于这个话题的问题here https gamedev stackexchange com questions 200260 intercept an accelerating object with a constant v
  • Android 正确关闭相机

    好吧 在过去的几周里 这种情况在我身上发生了几次 但我不知道如何解决它 基本上我的应用程序使用相机 但每隔一段时间 在应用程序上使用相机几次后 它有时会强制关闭 甚至无法与其他应用程序或手机上的默认相机一起使用 我发现解决此问题的唯一方法是
  • IRunningObjectTable.Register 始终将 pdwRegister 设置为 65536,这是一个无效值

    我在用着IRunningObjectTable Register and IRunningObjectTable Revoke如图所示this http www codeproject com KB COM ROTStuff aspx ms
  • 为 Android 实现 Firebase 服务器端倒计时器?

    有没有办法在 Android Studio 中实现 Firebase 服务器端倒计时器 我希望计时器位于服务器端 这意味着每当用户打开我的应用程序时 所有用户的计数器始终会在同一时间 我阅读了以下问题的答案this https stacko
  • 使用 CoffeeScript 以编程方式检查复选框

    如何以编程方式检查 Coffeescript 中的复选框 我知道在 Javascript 中 我可以使用这个 myElement checked true 我可以在 Coffeescript 中执行类似以下操作吗 myElement che
  • 符号字符串强制转换

    Symbol throws 类型错误 无法将符号值转换为字符串 虽然已知的解决方法是使用String Symbol 这看起来与其他原语不一致 包括那些几乎不应该被强制的原语 undefined and null 究竟如何String与 不同
  • 是否可以在更大的表达式中使用可选的 ifPresent() 来减轻对 get() 的调用?

    为了避免打电话get 这可能会引发异常 if a isPresent list add a get 我可以将此表达式替换为 a ifPresent list add 但是如果我需要执行更大的表达式 例如 if a isPresent b c
  • Biopython 成对比对导致循环运行时分段错误

    我正在尝试运行成对全局对齐方法biopython循环大约 10000 对字符串 每个字符串平均长度为 20 个字符 对一对序列运行该方法效果很好 但在循环中运行此操作 低至 4 对 会导致分段错误 如何解决这个问题 from Bio imp
  • 具有持久性的网页导航 - ASP.NET C#

    我有一个已经用 ASP NET 完成的网站 我需要在底部添加一个部分来保存实时流视频聊天 Flash 对象 并且我需要它在不同的页面访问中持续存在 例如我有可能被访问的 profile aspx 和 local aspx 并且我需要底部的小
  • li 元素内的作用域函数未被调用

    我使用 ng repeat 生成 li 在 LI 内部我有输入类型控件 它有一个范围函数 fn btnClose 当我单击按钮时 按钮的单击事件没有被调用 而是 li 的单击事件被触发 我在 js fiddle 中做同样的事情 它在那里工作
  • JSP 包含参数用法

    我应该如何访问param1来自包含的 jsp 的值 navMenu jsp
  • GPars:返回eachParallel{}

    我想对每个示例字符串做很多事情 并在此处返回一些其他类型的对象 整数 然后返回一些更大的类对象 在这个例子中 我正在尝试一些简单的事情 但我得到了完全错误的结果 至少对于我希望得到的东西 xD 我希望得到 6 5 6 5 但我得到的是 bu
  • iPhone/iPad 的核心文本示例

    我正在寻找 iphone ipad 的核心文本示例 但运气不佳 任何线索将不胜感激 我在 Github 上编写了一个小项目 为 Core Text 提供了 Objective C 包装器 https github com akosma Co
  • 如何使用 WHERE 条件中的关联值从 ABAP SQL 消费 CDS?

    我有一个通知标头的 CDS 视图及其状态关联 define view ZNOTIF as select from qmel as notif association 0 to ZNOTIF STATUS as status on statu
  • jquery如何选择所有以“text-”开头的类元素?

    我有一些课程 text 1 text 2 text 3 我想全部选择 该怎么做 谢谢您的帮助 尝试这个 欲了解更多详情 请参阅jquery selectors http api jquery com attribute starts wit
  • 如何在反向代理后面正确设置 JSESSIONID cookie 路径

    我的网络应用程序正在 Tomcat 中运行http localhost 8080 example com 但它是从 Apache 提供的反向代理http example com 在端口 80 上 我的网络应用程序查看request getH
  • RGB 缓冲区到 JPEG 缓冲区,这里出了什么问题?

    我需要一种简单的方法将包含 RGB 数据的缓冲区转换为 jpeg 我已经尝试过使用 libjpeg 但我根本无法让它正常工作 例如 将缓冲区保存为位图时会产生以下结果 使用 libjpeg 在内存中对同一图像进行编码会产生以下结果 将图像直
  • Linux 消息队列 - 多个接收者

    我最近一直在研究和研究 Linux 消息队列 并遇到了一些我不太明白为什么会发生的事情 如果我们运行两个程序 它们都在无限 for 循环中使用 msgrcv 来检查消息 然后发送两条消息 那么第一个运行的程序将收到第一条消息 第二个程序将收