Products
GG网络技术分享 2025-11-22 20:52 0
呀, EINPROGRESS这玩意儿东东听起来优良高大级,其实它就像是一个细小闹钟,告诉我们一个操作开头了但还没收尾哦。今天咱们就来说说这玩意儿闹钟怎么用,怎么让它跑得geng迅速、geng稳。

EINPROGRESS状态,就像名字一样,表示事情在进行中。我们在Zuo异步I/O和套接字操作的时候, 比如想跟另一台电脑说话,我们不会直接等它说完,而是告诉它:“我准备优良了你磨蹭磨蹭说。”然后我们就Neng去Zuo其他的事情了。这玩意儿过程中,Ru果有人问:“它说完了没?”我们就Nengkankan这玩意儿闹钟,闹钟告诉我们:“还在讲呢,别急。”
比如说我们想跟一个服务器连接,我们会用connect这玩意儿函数。这玩意儿函数一调用, 就会有个返回值,要么是0表示成功,要么是错误码,或者就是EINPROGRESS,告诉我们:“哎呀,连接还没开头呢,再等等呗。”
int sockfd = socket;
int ret = connect&serv_addr, sizeof);
if {
// Zuo其他事情, 比如等一会儿再检查
}
闹钟响起,就是我们收到通知,说操作完成了。这时候, 我们Neng用select、poll或者epoll这样的函数来轮询一下kankan套接字是不是准备优良了。
fd_set rset, wset;
FD_ZERO;
FD_ZERO;
FD_SET;
int ret = select;
if ) {
// 操作完成了
}
处理EINPROGRESS,就是处理这玩意儿“正在进行中”的状态。我们Neng用几个方法:
有时候,闹钟兴许永远不响,这时候我们就需要设置一个超时Ru果等得太久还没完成,我们就晓得这玩意儿操作兴许出问题了。
struct timeval timeout;
timeout.tv_sec = 10; // 10秒后超时
timeout.tv_usec = 0;
int ret = select;
if {
// 超时了
}
EINPROGRESS这玩意儿细小闹钟, 虽然听起来有点麻烦,但其实它就是告诉我们一个操作在进行中。学会怎么用这玩意儿闹钟,Neng让我们的程序跑得geng迅速、geng稳。优良啦,今天的内容就到这里希望你学会了怎么玩转EINPROGRESS!
Demand feedback