问题标签 [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.

0 投票
2 回答
3400 浏览

c++ - 为 WinSocks 和 *nix 创建一个非阻塞套接字

在 C/C++ 中,如何在 WinSocks 和 *nix 中将阻塞套接字转换为非阻塞套接字;这样 select() 才能正常工作。您可以将预处理器用于特定于平台的代码。

0 投票
12 回答
145908 浏览

python - 在python中轮询键盘(检测按键)

如何从控制台 python 应用程序轮询键盘?具体来说,我想在许多其他 I/O 活动(套接字选择、串行端口访问等)中做一些类似的事情:

在 Windows 上执行此操作的正确 pythonic 方法是什么?此外,Linux 的可移植性也不错,尽管它不是必需的。

0 投票
3 回答
9261 浏览

c++ - stdin/stdout/stderr 上的跨平台 (linux/Win32) 非阻塞 C++ IO

我正在尝试通过具有以下特征的标准输入/标准输出找到非阻塞 IO 的最佳解决方案:

  • 只要有足够的数据,就读入n 个大小的块。
  • 如果没有足够的数据,则读入部分块。
  • 如果没有可用数据,则阻塞直到有一些数据(即使它可能小于n)。

目标是在立即处理“控制”代码的同时允许有效传输大型数据集(而不是让它们停留在某个部分填充的缓冲区中)。

我知道我可以通过使用线程和 istream::get() 循环来实现这一点,或者通过编写一堆特定于平台的代码(因为你不能 select() 在 Windows 中的文件句柄上)......((那里也是 istream::readsome() ,这似乎很有希望,但我在谷歌上能找到的唯一结果是人们说它实际上效果不佳。))

由于我没有对这些 API 进行太多编码,也许有更好的方法。

0 投票
30 回答
271798 浏览

python - 在 Python 中对 subprocess.PIPE 进行非阻塞读取

我正在使用subprocess 模块来启动一个子进程并连接到它的输出流(标准输出)。我希望能够在其标准输出上执行非阻塞读取。有没有办法使 .readline 非阻塞或在我调用之前检查流上是否有数据.readline?我希望它是可移植的,或者至少可以在 Windows 和 Linux 下工作。

这是我现在的做法(.readline如果没有可用数据,它会阻止):

0 投票
11 回答
120946 浏览

c - C 非阻塞键盘输入

我正在尝试用 C 语言(在 Linux 上)编写一个程序,该程序循环直到用户按下一个键,但不应该需要按键来继续每个循环。

有没有一种简单的方法可以做到这一点?我想我可以做到这一点,select()但这似乎需要做很多工作。

或者,有没有办法在程序关闭而不是非阻塞 io 之前捕获ctrl-按键来进行清理?c

0 投票
2 回答
1245 浏览

unix - 如何从 Solaris 的命令行创建非阻塞管道?

我正在尝试编写一个从其他进程读取输入并对其进行分析的 lua 脚本。为此,我正在使用 io.popen 并且它在 Windows 中按预期工作,但在 Unix(Solaris)上从 io.popen 块读取,所以脚本只是在那里等待直到出现某些东西而不是立即返回......

据我所知,我无法从脚本中更改 io.popen 的功能,如果可能的话,我宁愿不必更改 C 代码,因为那样脚本将需要与修补后的绑定二进制。

这会给我留下任何命令行解决方案吗?

0 投票
8 回答
1376 浏览

java - 生成唯一负数的非阻塞算法

我最近重构了一段用于生成唯一负数的代码。
编辑:多个线程获取这些 id 并作为键添加到数据库;数字需要为负数才能轻松识别 - 在测试会话结束时,它们会从数据库中删除。

我的 Java 算法如下所示:

上面的代码结构,加上它对集合和“重试”循环的推测性添加,让我觉得有一个等效的非阻塞算法可以用任何原子变量替换同步集合。

我做了几次尝试使用原子变量重写,但都没有通过多线程攻击测试。

有没有优雅的非阻塞等价物?

编辑:出于好奇,这是使用原子整数作为保护的有缺陷的尝试

编辑:下面的测试工具:

0 投票
3 回答
4455 浏览

tcp - 非阻塞 TCP write(2) 成功但请求未发送

我看到在源接口上看不到使用 write(2) 写入非阻塞 TCP 套接字的一小组消息,也没有被目标接收。

可能是什么问题呢?应用程序有什么方法可以检测到这一点并重试?

0 投票
5 回答
3394 浏览

c - 如何缓冲非阻塞 IO?

当我在阻塞文件描述符上需要缓冲 IO 时,我使用 stdio。但是如果我根据手动stdio缓冲将文件描述符变为非阻塞模式是不可用的。经过一些研究,我发现 BIO 可用于缓冲非阻塞 IO。

但可能还有其他选择吗?

我需要这个来避免在多连接环境中使用线程。

0 投票
7 回答
71433 浏览

c - 你如何在 C 中的 Linux 上进行非阻塞控制台 I/O?

你如何在 C 中的 Linux/OS X 上进行非阻塞控制台 IO?