双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

如何实现异步非阻塞io.

netxuning netxuning 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
如下代码,在键盘没有输入的时候select处于阻塞状态.
但根据网上的文章的描述,非阻塞异步io在等待io的过程中,进程可以做其它事情,而不是干巴巴地等待io的就绪。
所以我想知道,下面的代码如何更改才能实现异步非阻塞? 如何实现在等待io的时候进行别的操作?


#include <stdio.h>
#include <sys/select.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <assert.h>

int
main ()
{
int keyboard;
int ret, i, cnt;
char c;
fd_set readfd;
struct timeval timeout;
keyboard = open("/dev/tty", O_RDONLY | O_NONBLOCK);
assert(keyboard>0);
/*
while(1)
{
i = read(keyboard, &c, 1);
printf("%c \n", c);
}
*/

cnt = 0;
while(1) {
timeout.tv_sec = 1;
timeout.tv_usec = 0;
FD_ZERO(&readfd);
FD_SET(keyboard, &readfd);
printf("waiting for io ...\n");
ret = select(keyboard+1, &readfd, NULL, NULL, /*&timeout*/ NULL); //blocked without timeout
if(FD_ISSET(keyboard, &readfd)) {
printf("%d\n", ++cnt);
i = read(keyboard, &c, 1);
printf("read out:%d\n", i);
if('\n' == c)
continue;
//printf("the input is %c\n",c);
if ('q'==c)
break;
}
}

}
...全文

相关推荐

基于Python的gtornado异步IO设计源码,实现阻塞IO调用非阻塞化及协程风格使用

本项目为基于Python的gtornado异步IO设计源码,共计包含26个文件,包括19个Python源文件、2个Markdown文件、1个.gitignore文件、1个YAML文件、1个LICENSE文件、1个文本文件、1个SQL文件。该源码旨在实现tornado框架中阻塞IO调用的非阻塞化处理,并通过greenify技术将C语言编写的库IO操作异步化,支持直接使用协程风格的代码编写,以提升程序执行效率和响应能力。

lsx202406

golang实现同步阻塞、同步非阻塞、异步非阻塞IO模型

然后,我们使用"net.Conn.Read"函数从客户端读取数据,并使用"processData"函数来处理客户端发送的数据。然后,我们使用"listener.Accept"函数接受客户端连接,并使用"handleConnection"函数来处理客户端连接。在"handleConnection"函数中,我们使用"net.Conn.Read"函数从客户端读取数据,并使用"processData"函数来处理客户端发送的数据。由于我们使用了同步阻塞IO函数来进行IO操作,所以程序会在执行IO操作时被阻塞。

少林码僧

Asynchronous-Server:使用非阻塞 IO 和自制线程池实现的异步服务器,能够使用有限的线程集处理数百个并发网络连接

异步服务器 使用非阻塞 I/O 和自制线程池实现的异步服务器,能够使用有限的线程集处理数百个并发网络连接。

不就是输

基于Swoole协程的高性能并发HTTP服务器项目集成MySQL连接池优化数据库访问实现异步非阻塞IO处理以大幅提升Web服务吞吐量与响应速度专为高并发场景设计如电商秒杀实.zip

基于Swoole协程的高性能并发HTTP服务器项目集成MySQL连接池优化数据库访问实现异步非阻塞IO处理以大幅提升Web服务吞吐量与响应速度专为高并发场景设计如电商秒杀实.zip

zzq678912345

PHP异步文件处理:LibUV扩展实现非阻塞IO的高吞吐日志系统.pdf

文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 PHP——Web开发的可靠伙伴!从快速搭建动态网站到处理复杂业务逻辑,它简洁灵活又强大。全球超80%服务器运行,海量框架与库助力开发。无论新手入门还是老兵深耕,PHP都能高效交付价值,持续赋能互联网创新!

fanxbl957
评论 11
收藏 已收藏
分享
返回顶部
netxuning
Linux/Unix社区 23,224 成员 74,535 内容