gpt4 book ai didi

java - 在单独线程上处理请求后写入非阻塞 NIO UDP (DatagramChannel) 套接字

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:35 24 4
gpt4 key购买 nike

我正在尝试一些网络代码,并且正在尝试找出一种在单独线程上处理事件后触发对 DatagramChannel 的写入的好方法。这对于 TCP 来说非常简单,因为您有一个单独的套接字,您可以在上面注册您的写入兴趣(请参阅 react 器模式等)。然而,对于 UDP,通过数据报 channel 注册和取消注册兴趣效果不太好,因为我基本上只是修改相同的选择键。

我觉得你要么阻塞事件处理程序线程中的发送(错误,因为我们使用阻塞发送),要么阻塞队列或其他东西来获取响应并写入它们(也是错误的,因为我们阻塞选择器线程)。

我想做一些事情,比如一旦有东西要写,就将兴趣切换到写入,然后再次返回读取,但是这样我就冒着竞争的风险,在写入排队后将其设置回读取,然后写入等待直到我得到下一次读取,这也很糟糕。

是的,我知道还有其他可能更适合此类事情的线程模型,但我正在尝试,所以我很好奇。 =)

最佳答案

当你想写的时候,你不必设置要写的interest-ops。只需从您碰巧所在的任何线程中写入即可。只有当该写入返回零时,您才需要担心写入兴趣操作,正如此处的许多答案。

关于java - 在单独线程上处理请求后写入非阻塞 NIO UDP (DatagramChannel) 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49308205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com