问题标签 [flow-control]
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.
ssh - tmux 流控制
我正在运行 Ubuntu 12.04 并在 ADSL 链路上使用 tmux 1.6 的机器(8Mbps/1Mbps 向下/向上)。
当有很多快速终端输出时,链接会饱和并且完全没有响应,我无法切换 tmux 窗口或任何东西,并且必须终止 ssh。
是否有一些 tmux 设置来防止这种情况?我看过一些补丁,但不清楚它们的作用。
networking - 小 TCP 接收窗口的好处?
当我遇到接收窗口的概念时,我正在尝试了解 TCP 流控制是如何工作的。
我的问题是,为什么 TCP 接收窗口可以缩放?实现小接收窗口大小有什么好处吗?
因为据我了解,接收窗口大小越大,吞吐量就越高。而接收窗口越小,吞吐量越低,因为 TCP 总是会等到分配的缓冲区未满再发送更多数据。那么,让接收窗口始终处于最大值以获得最大传输速率是否有意义?
embedded - 配置 minicom 以使用硬件流控制
寻找一些帮助来测试具有OMAP L138的硬件流控制的 UART 实现。为了测试我minicom
用来模拟串行链路另一端的实现,我正在寻找一些关于如何配置它的见解。
我有一个简单的应用程序,它通过 UART 将消息从 OMAP 发送到 minicom。如果 OMAP 和 minicom 都配置为不使用硬件流控制,这将按预期工作。当我打开硬件流控制时,我在 minicom 上看不到任何输出。
这是我遵循的步骤列表:
- 配置 minicom 使用硬件流控(Ctl AO 打开 minicom 串口设置菜单,F 启用硬件流控)。
- 使用
stty
我启用 rts/cts 握手stty -F /dev/ttyS1 crtscts
。使用命令stty -F /dev/ttyS1 -a
我可以确认 crtscts 已启用。
上述两项更改确保在终端程序和 UART 驱动程序中启用硬件流控制。OMAP 上的 UART 也已配置为使用硬件流控制。
但是,上面列出的对 minicom 的更改似乎不足以使流量控制正常工作。启动应用程序后,来自 OMAP 的 RTS(请求发送)信号变低,向 minicom 指示它要发送数据。如果配置正确,minicom 应该将 OMAP 的 CTS(清除发送)信号拉低并开始接受数据,直到达到指定的接收缓冲区阈值。这不会发生。OMAP 的 CTS 输入始终为高电平。只是为了好玩,我尝试在 OMAP 上将 RTS 短接到 CTS,瞧,预期的消息确实出现在 minicom 上!这是一张显示两者如何连接的图像。
从我的尝试来看,我在配置 minicom 的方式上似乎遗漏了一些东西。任何建议表示赞赏。
asynchronous - 如何在 Erlang 中创建内存绑定消息队列?
我想要异步消息的速度,但仍然有一些流量控制。我怎样才能在 Erlang 中做到这一点?
python - 使用带有 pyserial 的 xonxoff-flow 控制
我目前正在尝试与 HP 打印机的旧型号进行交互,它为我提供了两种可能的流量控制方法:根本没有流量控制或基于软件的流量控制 (XON/XOFF)。
我正在使用以下命令初始化 pySerial,并且只使用一个普通的大字符串将我的数据写入端口:
这工作正常 - 但有一个问题:似乎完全忽略了流控制并且发送和发送数据 - 这导致设备出现 IO 缓冲区溢出并停止工作。
我的第一个想法是,如果我使用 serial.write('unbelivable long string'),pySerial 可能无法停止传输,所以我将字符串分成块并发送:
嗯......这也不起作用。
所以基本上我可以将波特率更改为较低的值,以便设备比传输速度更快,或者每隔几个块添加类似睡眠的东西......但我想,这不是一个应该做的事情。
所以...任何人来解释我,我做错了什么?;-)
谢谢,
马丁
c# - Windows (C# preferably) - How to find out that we are not reading data from socket fast enaugh
If I am not reading data from socket fast enough, the TCP protocol will decrease sliding windows size and sender might get blocked during sending (as discussed here what happens when I don't manage to call `recv` fast enough?).
How do I detect this situation on receiver side on Windows - preferably directly in C# code and without impacting the performance of reading from socket? Other monitoring solution (perfmon, wireshark) is also acceptable but far less optimal for my scenario.
What is the exact scenario? Let's say the server app can transmit data with speed up to 1Mbps, however my client app is able to receive the data only with the speed of 0.5Mbps. How do I find out in the client application that TCP flow control is kicking in and decreasing the transmit speed?
I came over Socket.Available property http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.available.aspx and was wondering if that might be recomendable way of querying this information?
javascript - DOM 操作未按顺序执行
在我汇总的以下示例中寻找解决方案,甚至只是一些“幕后”理论。
似乎对 DOM 的操作是以非阻塞方式发生的。换句话说,没有流控制来等待 DOM 语句的执行。
在这个例子中:http: //jsfiddle.net/qHVJX/
在 onclick 事件之后执行两个语句。
将文本从左向右移动
/li>循环一堆时间来停止执行。
/li>
如果在执行每个语句时阻止了流控制,那么正如预期的那样,文本将从左向右移动,然后在循环中短暂暂停。相反,文本移位发生在循环迭代之后。
这表明 className 语句排队,而循环优先执行。
在这个例子中:http: //jsfiddle.net/qHVJX/1/
在 onclick 事件之后执行三个语句:
将文本从左向右移动
/li>循环一堆时间来停止执行。
/li>将文本从右向左移动。
/li>
同样,如果在执行每个语句时流控制被阻塞,那么正如预期的那样,文本将左移到右,然后在循环迭代时短暂停顿,然后文本从右移到左。
相反,执行循环并且从左到右和从右到左重新绘制文本永远不会发生。这说明了竞争条件。
setTimeout() 可以停止执行足够长的时间让 DOM 语句完成它并避免排队;没有办法知道每个语句需要多长时间。如果间隔设置为短,则不会达到预期的结果。如果间隔设置得比它需要的长,那么性能就会受到影响。
在没有 setTimeout() 开销的情况下,是否有在 DOM 操作期间阻止执行?也许某种回调例程?
任何见解将不胜感激。谢谢。
jmeter - 如何在 JMeter 中限制 http 请求的速度(或流量控制)
我想模拟最终用户使用 JMeter 访问一些 http url。是否可以像流量控制一样限制每个 http 请求的连接速度?说限制 JMeter 以 1M bps 的最大速度为每个 http 请求获取响应。
python - pySerial XON/OFF 在 Linux 上失败,但在 Windows 上有效
我有一个小循环,应该从串行端口读取一些多行和未指定长度(有时相当大)的文本数据,并将其写入文件:
我正确设置了端口,整个程序在 Windows 机器上运行良好。当我在 Linux 机器上运行它时,它仍然会接收数据,但软件流控制无法工作 - 而是实际上将XON
和XOFF
(\S 和 \Q) 的控制代码写入文件。导致溢出错误并破坏我的数据。我已经阅读并尝试了所有我能想到的东西——似乎大多数这样的例子只需要几个字节并且没有使用任何流控制。我也尝试过miniterm
包含的内容pySerial
,它给出了相同的结果。
有任何想法吗?
为文件和端口添加了行:
除了我将一个字符串写入另一个设备以开始发送之外,没有什么比这更多的了,因为我看到了带有数据的响应,所以这很有效。我也尝试过打印到控制台而不是写入文件。同样的事情 - 溢出和打印控制代码。
更新:我也尝试过一次读取一个字节而不是整行,并尝试了其他波特率——所有这些都没有变化。
更新#2:一直在做一些阅读和测试。用 minicom 测试。结果相同。手动验证端口是否已使用“stty -a”正确设置(尽管我不相信这一点,因为它可能会根据我阅读的内容保存和恢复设置)。这可能是termios的问题?
networking - 滑动窗口和拥塞窗口的区别
流量控制中的滑动窗口和拥塞控制中的拥塞窗口有什么区别和联系?
我认为两者都是传输的控制大小,但有什么区别?我也不太明白流量控制和拥塞控制之间的区别。