2013-04-11 35 views
2

假設我有一個ncurses應用程序,它以秒爲間隔更新我的終端窗口(每個毫秒,比如說,在一個循環中)。基於SSH的毫秒定時

while(true) 
    write_some_value_to_terminal(); 
    sleep_for_1_millisecond(); 

如果我SSHed到我的計算機遠程,我運行這個程序,這是否意味着SSH需要做一個來回每毫秒更新我的(遠程)窗口?

編輯第二個問題,我正在編寫的代碼的實際應用是,我如何確定最佳睡眠值?瞄準亞秒級時機是否有意義?

+0

取決於緩衝。你總是可以使用Wireshark進行檢查(它不能告訴你發送了什麼,但它可以告訴你多少次和多久) – nneonneo 2013-04-11 21:09:17

+0

你的「遠程窗口」更新有多快?你會注意到這個政權中的任何事情少於20毫秒嗎?我會懷疑寫每串10到20毫秒會很好。 – Arno 2013-04-12 08:45:00

回答

0

差不多。寫作需要一段時間,之後它會睡眠一個毫秒,然後再寫。

0

由於Nagle's algorithm這是很可能,你將不會在1毫秒的時間間隔看到你更新的。更不用說你的延遲很可能會高於1ms(除非你在同一個本地網絡上),在這種情況下,更新將通過常規的TCP確認行爲進行合併。

+0

SSH和telnet通常會禁用Nagle(假設輸出將打到tty;管道可能採取不同的操作) – 2013-04-11 21:33:51

+0

請參閱我的更新問題。假設 - 正如Ben Voight斷言的那樣 - 假如Nagle被禁用,我如何能夠在不訴諸試驗錯誤的情況下找出近似的睡眠值? – g33kz0r 2013-04-11 22:58:29