- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试构建一个基于Netty的UDP服务器,以根据客户端订阅(在订阅设置之前交换一些UDP请求/响应消息)向不同的客户端持续发布事件(每秒大约500个事件)。
设计是让 Java Executor 创建一些生产者/消费者线程。一旦消息生成,消费者线程会将其写入UDP channel 。
观察发现,服务器端只有一个 EventLoop 线程在该 UDP channel 上工作,并且它非常忙于向套接字写入消息,因此对第二个及之后的客户端订阅请求的响应非常慢。
所以想知道是否有办法为 NIO UDP 服务器端启用多个工作线程,以便一个或几个线程忙于将发布事件写入套接字,而我们仍然有其他线程来处理新的客户端订阅请求而不会延迟。非常感谢任何建议。
顺便说一句,服务器端 Netty 处理程序非常简单:日志处理程序、解码器处理程序、编码器处理程序和订阅处理程序。
最佳答案
简短的回答一般来说不会...由于 Channel
始终与一个 EventLoop
绑定(bind),因此只有一个线程处理它。也就是说,如果您使用 native epoll 传输(仅适用于 Linux),您可以使用 EpollChannelOption.SO_REUSEPORT 将多个 Channel 绑定(bind)到同一端口,这些端口由不同的 EventLoop 和 Thread 处理。
关于java - Netty UDP 服务器可以有多个 eventloop 线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43523875/
EventLoop 接口 Netty 是基于 Java NIO 的,因此 Channel 也有其生命周期,处理一个连接在其生命周期内发生的事件是所有网络框架的基本功能。通常来说,我们使用一个线程来处理
与通过 POLLIN 多路复用多个套接字有何不同? while True: socks = dict(poller.poll()) if socks.get(control_recei
相关问题here 我发现了 runTouchApp 函数的 slave 属性可以阻止 Kivy 的事件循环运行并强制从其他地方更新它。 这是使用该属性的 app.py 的一部分: # we are i
我正在阅读netty 4源代码。 eventLoop.inEventLoop() 随处可见。根据 Netty 的实际情况: A Channel is registered for its lifeti
如何从 EventLoop 获取单线程执行器? 原因是我想对应用程序的一部分使用单个线程,但仍可供 EventLoop 使用。 最佳答案 事件循环始终仅由单个线程支持。所以事件循环实际上只是一个单线程
我的应用程序的第一个屏幕有一个包含三个按钮的小菜单(在网格布局中)。两个应该打开弹出窗口。一份用于“帮助”,一份用于“关于”。第三个屏幕变为另一个屏幕。 只有一个弹出窗口有效。第一个调用(在 kivy
我想在后台线程中创建一个 PyZMQ 事件循环,并让它与独立的 Python 脚本和 IPython 脚本一起正常工作。 (IPython 使用位于主线程中的 PyZMQ 事件循环,因此这给我带来了问
我真的为此而疯狂,我希望有人能给出答案......我确实遇到了 QUdpSockets 的奇怪问题以及信号和槽连接。我在 3 个不同的 UdpSockets 接收小数据包(64 字节) 100Hz,之
我正在尝试让 python 为我播放一个音频文件。我正在思考的树冠中编写我的代码。 import pyglet sound = pyglet.media.load('song.wav') sound.
我正在尝试构建一个基于Netty的UDP服务器,以根据客户端订阅(在订阅设置之前交换一些UDP请求/响应消息)向不同的客户端持续发布事件(每秒大约500个事件)。 设计是让 Java Executor
我试图理解为什么在我的 QProcess waitForFinished() 和 waitForStarted() 调用可以工作之前,不需要在以下 Qt 4.8 代码中调用 a.exec() 。我知道
我是一名 Rust 初学者,正在为异步 IO 问题而苦苦挣扎。我决定使用 mio . 我已经阅读了一些源代码和教程,但仍有一些基本部分我不明白。我正在使用 netcat -k -l 127.0.0.1
我想检测 Netty 的 EventLoop 以便: 以确定的顺序运行任务。 捕获计划任务的截止日期。 快进虚拟时钟,触发截止任务的执行。 我知道 EmbeddedChannel 并在一些测试中使用它
在设计和性能方面推荐哪种方法来处理多个 Zeromq 套接字,为什么? ZeroMQ 使用的 Tornado 的 IOLoop 占用的 CPU 比 while 循环中用于处理多个套接字的 Poller
Event Loop 是 JavaScript 的基础概念,面试必问,平时也经常谈到,但是有没有想过为什么会有 Event Loop,它为什么会这样设计的呢? 今天我们就来探索下原因。 浏览
1.写在前面 无论是浏览器端还是服务端Node.js,都在使用EventLoop事件循环机制,都是基于Javascript语言的单线程和非阻塞IO的特点。在EventLoop事件队列中有
什么功能eventloop在 Scala 中做 Actors它有什么用? 最佳答案 eventloop与 loop 类似和 react被结合。 loop的区别和 eventloop是loop ,实际上
我知道在 python37 中我们有一个新的 api asyncio.get_running_loop() ,好用,让我们在调用协程的时候不需要显式传递eventloop。 我想知道我们是否可以使用任
我越来越熟悉 python 的 异步 ,python中的异步编程,协程等。 我希望能够用我自己定制的 执行几个协同程序事件循环 . 我很好奇我是否可以自己写 事件循环 不导入 异步 根本 最佳答案 I
我正在研究Netty 4.0.0.Alpha5代码,以了解如何处理线程。我还通过http://netty.io/wiki/new-and-noteworthy-in-4.0.html#wiki-h2-
我是一名优秀的程序员,十分优秀!