使用sleep()或无限循环来等待事件会更好吗?

Cho*_*enn 4 c sleep libssh

我目前正在研究与SSH服务器通信的客户端.一切都运行良好,但是,因为服务器回答很慢,我不得不等待它发送数据.我有两个选择,我想就什么是等待服务器的最有效方法提出建议.

选择#1:

while (!(ssh_channel_poll(*sshChannel,0)))
 ;
Run Code Online (Sandbox Code Playgroud)

选择#2:

while (!(ssh_channel_poll(*sshChannel,0)))
  sleep(1);
Run Code Online (Sandbox Code Playgroud)

Die*_*Epp 8

两种选择都是不可取的 通常,您将使用阻止读取.我认为它看起来像这样(因为你说你在等待服务器):

while (!ssh_channel_poll(...)) { ... }
ssh_channel_read(...);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,这poll是不必要的.只需确保SSH连接是阻塞连接,read如果没有可用数据,该功能将等待数据可用.

// This is all you need.
ssh_channel_read(...);
Run Code Online (Sandbox Code Playgroud)