625得票32回答
在Python中对子进程.PIPE进行的非阻塞读取

我正在使用subprocess模块启动一个子进程并连接到其输出流(标准输出)。我想能够对其标准输出执行非阻塞读取。是否有一种方法可以使.readline变为非阻塞或在调用.readline之前检查流中是否有数据?我希望这可以在Windows和Linux下可移植或至少起作用。 目前,我的做法是这...

189得票11回答
在C#中实现“fire and forget”方法的最简单方式是什么?

我在WCF中看到了[OperationContract(IsOneWay = true)]属性。但是WCF似乎有点慢且繁重,只是为了创建一个非阻塞函数。理想情况下,应该有类似于 static void nonblocking MethodFoo(){} 的东西,但我认为那不存在。 在C#中创...

177得票16回答
异步 JDBC 调用是否可行?

我想知道是否有一种方法可以对数据库进行异步调用? 例如,假设我有一个非常耗时的大请求,我想发送请求并在请求返回值时收到通知(通过传递监听器/回调或类似机制)。我不想阻塞等待数据库的响应。 我认为使用线程池不是一个解决方案,因为它无法扩展,在大量并发请求的情况下,这将产生大量线程。 我们在...

154得票2回答
Node.js中的非阻塞或异步I/O是什么?

在服务器端JavaScript引擎的上下文中,非阻塞I/O或异步I/O是什么?我看到这被提及为优于Java服务器端实现的优点。

145得票9回答
非阻塞I/O真的比多线程阻塞I/O更快吗?为什么?

我在网上搜索了一些有关阻塞I/O和非阻塞I/O的技术细节,并发现有几个人声称非阻塞I/O比阻塞I/O更快。例如,在这篇文章中。 如果我使用阻塞I/O,那么当前被阻塞的线程当然不能做任何其他事情...因为它被阻塞了。但是,一旦线程开始被阻塞,操作系统就可以切换到另一个线程,并在被阻塞的线程有任...

98得票5回答
异步、非阻塞和事件驱动架构有什么区别?

以下是三种架构的区别: 异步(Asynchronous), 非阻塞(Non-Blocking)和 事件驱动(Event-based)。 有些东西可以同时是异步、非阻塞(以及事件驱动)吗? 在编程中,最重要的是拥有异步、非阻塞和/或事件驱动(或者全部三个)? 如果您能提供示例,那就太好...

95得票11回答
C 非阻塞键盘输入

我正在尝试在Linux下用C语言编写一个程序,该程序会循环运行直到用户按下键盘上的任意键,但不需要在每个循环中按下按键才能继续。 有没有简单的方法可以实现这个功能?我认为可能可以使用select()函数来实现,但那好像有点繁琐。 或者,是否有一种方法可以捕捉到ctrl-c按键事件,在程序关...

90得票4回答
如果在非阻塞套接字上调用Python的socket.recv()方法时,在超时之前没有接收到任何数据,它会返回什么?

基本上,我在几个地方读到过 socket.recv() 会返回其可以读取的任何内容,或者一个空字符串,表示对方已关闭连接(官方文档甚至没有提到在连接关闭时它会返回什么...太好了!)。这对于阻塞式套接字来说是完全可以的,因为我们知道只有在实际有数据可接收时recv()才会返回,所以当它返回一个...

89得票5回答
非阻塞IO和异步IO在Java中的实现

尝试为自己总结这两个概念的区别(因为当我看到人们在一个句子中使用它们两个时,例如“非阻塞异步IO”,我真的很困惑,想弄清楚它是什么意思)。 因此,在我的理解中,非阻塞IO主要是操作系统处理IO的机制,如果有数据准备好,否则只返回错误/不执行任何操作。 在异步IO中,您只需提供回调函数,当数...

88得票2回答
何时以及如何使用Tornado?它什么时候是无用的?

好的,Tornado是非阻塞且相当快速的,可以轻松处理大量的常规请求。 但我猜它并不是一种万能解决方案,如果我们只是盲目地使用基于Django或其他网站的Tornado,那么它不会带来任何性能提升。 我找不到综合的解释,所以在这里问一下: 应该在什么情况下使用Tornado? 它无用的...