alsa pcm接口之阻塞和非阻塞打开和异步通知模式

阻塞和非阻塞打开 (Blocked and non-blocked open)

当设备打开在一个阻塞或非阻塞模式,ALSA pcm api接口使用不同的行为,模式可以指定通过mode参数通过snd_pcm_open函数,blocked mode阻塞模式是默认打开方式,在这个模式下,行为表现为当资源被其他应用程序使用,应该阻塞调用者,直到资源释放出来了.非阻塞行为表现为(SND_PCM_NONBLOCK)不会阻塞调用者,如果当前资源不可使用的话,可以返回一个

-EBUSY的错误.注意模式还决定了标准I/O调用的行为,当非阻塞模式使用下,返回一个-EAGAIN的错误码,当ringbuffer已经满了(playback播放)或者空的(capture);对于I/O调用的操作模式是可以改变的通过snd_pcm_nolock()函数.
异步模式 (Asynchronous mode)

通过特定时间周期可以接受异步通知,可以查看snd_pcm_open函数设置SND_PCM_ASYNC模式和snd_async_add_pcm_handler()函数了解更多信息.

相关推荐
Sleepy MargulisItG16 小时前
【Linux网络编程】应用层协议:HTTP协议
linux·服务器·网络·http
G311354227316 小时前
Linux 内核设计中的核心思想与架构原则
linux·架构·php
zhuzewennamoamtf16 小时前
Linux内核platform抽象、数据结构、内核匹配机制
linux·运维·数据结构
Kira Skyler17 小时前
ELF文件解析 elf.o 文件主要内容.md
linux
逐梦吧!旅行者18 小时前
Linux MySQL 5.7用户管理与用户密码的设置问题
linux·mysql
RisunJan18 小时前
Linux命令-grpck命令(验证和修复组配置文件(`/etc/group` 和 `/etc/gshadow`)完整性的工具)
linux·运维·服务器
loosed18 小时前
Ubuntu mysql8 tar.xz 安装
linux·ubuntu·adb
Xの哲學18 小时前
Linux VxLAN深度解析: 从数据平面到内核实现的全面剖析
linux·服务器·算法·架构·边缘计算
添砖java‘’19 小时前
Linux信号机制详解:从产生到处理
linux·c++·操作系统·信号处理
好评12419 小时前
Linux文件上传git
linux·运维·git