如何与 Ruby 中的线程通信?

Posted

技术标签:

【中文标题】如何与 Ruby 中的线程通信?【英文标题】:How to communicate with threads in Ruby? 【发布时间】:2012-04-20 04:50:42 【问题描述】:

我正在构建一个实时游戏,主要基于聊天,我需要同时运行许多聊天,通过网络套接字接收和发送数据。

有人告诉我,与其在每个游戏中生成一个进程,不如在每个游戏中有一个进程和一个线程(可能使用事件机器)。

我将 Juggernaut 用于套接字部分,它允许我使用发布/订阅系统向游戏中的所有玩家发送数据:每个玩家订阅一个游戏。但是我如何将每个玩家的数据发送到那个特定的游戏呢?

我在想我可以把游戏ID或频道ID从客户端发送到服务器,然后发送到相应的线程。

但是如何向线程发送任何内容?

【问题讨论】:

你考虑过使用 Redis 吗?您可能有一个接收数据并将其存储在 Redis (redis.io) 中的操作。 【参考方案1】:

要将数据发送到线程,可以使用 Ruby Queue:

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/thread/rdoc/Queue.html

【讨论】:

以上是关于如何与 Ruby 中的线程通信?的主要内容,如果未能解决你的问题,请参考以下文章

Java 多线程与并发:内存模型

Java并发拾遗——并发JMM与重排序

线程与在线程中的通信

等待与唤醒机制(线程之间的通信)

Android两个子线程之间通信

PyQt5中如何与线程通信并等待结果