Linux异步信号IO模型
来源:互联网 发布:截图软件电脑版 编辑:程序博客网 时间:2024/05/10 13:26
SIGIO信号支持套接字和终端设备上的信号驱动IO,信号驱动IO模型主要是在UDP套接字上使用,在TCP套接字上几乎不怎么使用。
在UDP上,SIGIO信号会在如下两个事件中所产生:
(1) 数据报到达套接字
(2) 套接字上发生错误
下面我们使用SIGIO作信号驱动IO:
//main()函数中......sem_t sem; //定义信号量sem_init(&sem,0,0); //信号量初始化为零......signal(SIGIO,handler); //设置对应信号的处理函数,当SIGIO信号发生时,调用handler()函数进行处理......while(1); //等待SIGIO信号到来,激发hangdler运行//handler()函数void handler(int signum){ printf("inti handler\n"); sem_post(&sem);//信号量加1,执行线程}//thread_function()函数void *thread_function(void *arg){ printf("send data thread\n"); while(1) { sem_wait(&sem);//信号量减1,当sem=0时,一直等待 ioctl(axi_dma_fd, AXI_XADC_DMA_CONTINUE);//清除complete位,设置尾指针 for(i=0;i<NUM_IINT ;i++ ) //发送6个buffer { for(j=0;j<BUFFER_LENGTH;j+=SEND_LEN) //每个buffer的长度 { send_num=sendto( sockfd,&(buffer[num][j]),SEND_LEN,0,(struct sockaddr *)&client,client_len ) ; if(send_num!=SEND_LEN) printf("send data failed,send_num=%d\n",send_num); } num++; if(num==buf_cnt) num=0; } }//pthread_exit(NULL);}
0 0
- Linux异步信号IO模型
- linux下五种IO模型小结(阻塞IO、非阻塞IO、IO复用、信号驱动式IO、异步IO)
- linux基础——linux下五种IO模型小结(阻塞IO、非阻塞IO、IO复用、信号驱动式IO、异步IO)
- 网络模型:阻塞IO,非阻塞IO,IO复用,信号驱动IO,异步IO
- IO五种模型(阻塞IO、非阻塞IO、多路复用IO、信号驱动IO、异步IO)
- linux网络编程异步IO模型之—select模型 .
- 深入浅出异步IO模型
- 理解异步IO模型
- 重叠IO模型-异步IO
- 重叠IO模型 - 异步IO
- 重叠IO模型 - 异步IO
- 重叠IO模型 - 异步IO
- linux 信号异步通知
- Linux异步信号
- Linux IO技术体系(阻塞 非阻塞 同步 异步 多路IO复用select poll epoll 信号驱动 异步)
- Winsock异步IO----select模型
- Linux C 网络编程——6. IO阻塞、非阻塞、复用、信号驱动、异步驱动
- Linux C 网络编程——6. IO阻塞、非阻塞、复用、信号驱动、异步驱动
- 表单样式
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- Android5.0双卡分析
- 单例模式【Singleton Pattern】
- Android通过注解初始化View
- Linux异步信号IO模型
- BZOJ1336 [Balkan2002]Alien最小圆覆盖
- 易语言 写注册项恶搞到你重装系统
- java实现记事本之Java记事本源码及实现
- 什么是Redis
- 等式变换
- Tomcat的目录结构及用途
- Android——微信支付
- linux目录结详解