我目前正在与一个与SSH服务器通信的客户端上工作。 一切都运行良好,但是,因为服务器回答很慢,我不得不等待它发送数据。 我有两个选择,我想就什么是等待服务器的最有效方式提出建议。
选择#1:
while (!(ssh_channel_poll(*sshChannel,0)))
;
选择#2:
while (!(ssh_channel_poll(*sshChannel,0)))
sleep(1);
答案 0 :(得分:8)
两种选择都是不可取的。通常,您将使用阻止读取。我认为它看起来像这样(因为你说你在等待服务器):
while (!ssh_channel_poll(...)) { ... }
ssh_channel_read(...);
在这种情况下,poll
是不必要的。只需确保SSH连接是阻止连接,read
函数将等待,直到数据可用时,如果没有可用的话。
// This is all you need.
ssh_channel_read(...);
答案 1 :(得分:1)
您可能想要拨打poll(2)系统电话(或旧的select(2))。然后,您需要获取相关的文件描述符。或使用ssh_channel_poll_timeout功能或ssh_channel_select。
答案 2 :(得分:1)
我认为使用sleep
而不是无限循环,因为使用无限循环,会浪费CPU功率和时间。使用sleep
时,CPU将能够运行其他程序。
答案 3 :(得分:0)
剪辑不是一个好主意。 有了睡眠(...),你几乎不会使用你的cpu,就像使用空时(...)一样。