问题标签 [nonblocking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何避免使用 Java ServerSocket 阻塞?
我正在开发一个套接字侦听器,它必须在 2 个端口上侦听 2 种数据(端口 80 和端口 81)。这些数据与对数据执行的操作类型非常相似,只是不同,因为它们到达 n 个不同的端口。我继续使用 Java 的 ServerSocket 类编写了一个实现,后来才意识到 ServerSocket 类的 accept() 方法是阻塞的,而我的实现负担不起。所以现在我正在考虑使用 Java NIO 实现相同的功能,但是在阅读了一些教程之后,我认为我比我开始的方式更困惑。如果这里有人可以指导我完成整个过程,那将是很棒的,即使它是伪代码或只是技术性的“下一步做什么”。这是我计划实现的。
通过调用 2 个类似的线程,像永远一样在 2 个端口上监听。(非阻塞)来自某个网络位置的远程设备连接、发送数据然后断开连接。
我认为,如果仅了解如何使用 NIO 设置服务器以在 localhost 上的端口(例如端口 80)上侦听,那么其余的都非常容易实现。
干杯
c - 如何将套接字重置为阻塞模式(在我将其设置为非阻塞模式之后)?
我已阅读有关将套接字设置为非阻塞模式的内容。
http://www.gnu.org/software/libc/manual/html_mono/libc.html#File-Status-Flags
这是我所做的:
如何将套接字设置回阻塞模式?我没有看到 O_BLOCK 标志?
谢谢你。
java - NIO:发送消息然后立即断开连接
在某些情况下,我希望使用非阻塞 I/O ( SocketChannel.write(ByteBuffer)
) 从服务器向客户端发送错误消息,然后断开客户端。假设我写了消息的全部内容然后立即断开连接,我认为客户端可能不会收到此消息,因为我猜测操作系统此时实际上还没有发送数据。
这是否正确,如果是,是否有推荐的方法来处理这种情况?
我正在考虑使用计时器,如果我想断开客户端的连接,我会发送一条消息,然后在 1-2 秒后关闭他们的连接。
opengl - VSync=on 的非阻塞 SwapBuffers()
我正在寻找一种可移植的方式来制作非阻塞 SwapBuffers() 即使 VSync 被激活。
换句话说,是否有可能被事件通知或知道直到下一个 VSync 的延迟?
vb.net - 简单、无阻塞的睡眠方式?
我在谷歌上搜索并在这里阅读了一些线程,但我还没有找到一种简单的方法让 VB.Net 应用程序休眠一段时间并仍然保持应用程序响应:
真的没有简单的、非阻塞的解决方案让 VB.Net 应用程序等待几秒钟吗?
谢谢你。
sockets - C中的非阻塞udp套接字编程:我得到了什么?
我在理解 recv()/recvfrom() 从非阻塞 UDP 套接字返回什么时遇到了问题。
更具体一点,与 TCP 相比(如果我错了,请纠正我):
在缓冲区中有一些数据之前,阻塞套接字(TCP 或 UDP)不会从 recv() 返回。这可能是一些字节数 (TCP) 或完整的数据报 (UDP)。
非阻塞 TCP 套接字返回 EWOULDBLOCK (linux) / WSAEWOULDBLOCK (windows) 或当前在缓冲区中的字节。由于 TCP 数据是一个流,因此返回多少字节并不重要。
现在的问题:
- 如果没有可用数据,非阻塞 UDP 套接字也会返回 WOULDBLOCK (linux) / WSAEWOULDBLOCK (windows)。但是,如果有数据可用,非阻塞 UDP 套接字是否只返回一些字节,这可能意味着您只能获得一半的数据报,或者 UDP 套接字是否总是返回完整的数据报?
编辑:
我所说的“一半数据报”的意思是:如果我在套接字当前正在接收数据报的那一刻调用 recv() 会发生什么。在那一刻,缓冲区中有一些字节,但数据报还没有完成。
感谢您的解释和评论。谢谢!
mysql - 是否可以在 Django 应用程序中进行异步/并行数据库查询?
我的网页需要 10 到 20 次数据库查询才能获取所有必需的数据。
通常在发出查询后,Django 线程/进程会被阻塞,等待结果返回,然后它会恢复执行,直到到达下一个查询。
有什么方法可以异步发出所有查询,以便数据库服务器可以并行处理它们?
我正在使用 MySQL,但也想了解其他数据库的解决方案。例如,我听说 Postgresql 有一个异步客户端库——在这种情况下我将如何使用它?
c++ - 使异步套接字服务器和客户端工作(用C编写)
有人可以帮我处理这些代码吗?我正在尝试使客户端和服务器进行异步通信。我的意思是客户端和服务器都不会互相等待(例如,当服务器或客户端从 recvfrom() 读取数据并且数据不存在时,它会采用最后收到的数据(我命名为备份)。以下是代码:
客户
服务器 ...
代码被编译并链接有任何问题,但它们不相互交换数据,为什么?……是不是哪里有问题?
感谢您的回复,
PS:代码现已删除...
c - 在键盘输入上执行无限循环停止 - C
有什么方法可以运行一个无限循环,该循环仅在用户从键盘输入时停止,而不要求每个循环继续?在一个 C 程序中(我正在开发一个 C 聊天,它通过for(;;)
循环读取条目,只有当用户想要输入和发送消息时我才需要停止它)大家好!
c++ - C ++并发关联容器?
我正在寻找某种关联容器,它提供安全的并发读写访问,前提是您永远不会同时读写相同的元素。
基本上我有这个设置:
线程 1:创建 A,将 A 写入容器,通过网络发送 A。
线程 2:接收 A 的响应,从容器中读取 A,做一些处理。
我可以保证我们只写一次 A,尽管我们可能会收到多个 A 的响应,这些响应将被串行处理。这也保证了我们永远不会同时读取和写入 A,因为我们只有在发送 A 之后才能收到对 A 的响应。
所以基本上我正在寻找一个容器,其中写入元素不会与任何其他元素混淆。例如,std::map
(或任何其他基于树的实现)不满足此条件,因为它的底层实现是红黑树,因此任何给定的写入都可能重新平衡树并破坏任何并发的读取操作。
我认为std::hash_map
或者boost::unordered_set
可能适用于此,只是基于我的假设,即普通的哈希表实现将满足我的标准,但我并不积极,我找不到任何可以告诉我的文档。有没有其他人尝试过类似地使用这些?