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()函数了解更多信息.

相关推荐
Maple_land18 分钟前
Linux复习:系统调用与fork
linux·运维·服务器·c++·centos
无聊的小坏坏36 分钟前
Poll 服务器实战教学:从 Select 迁移到更高效的多路复用
linux·服务器·poll·io多路复用
WAsbry1 小时前
InputConnection机制与跨进程文本操作的工程实践
android·linux
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [kernel]cpu
linux·笔记·学习
WAsbry1 小时前
从一个Bug看Android文本编辑的设计缺陷
android·linux
大聪明-PLUS1 小时前
Linux 中 timeout、watch 和 at 的指南:管理命令执行时间
linux·嵌入式·arm·smarc
想唱rap2 小时前
Linux开发工具(4)
linux·运维·服务器·开发语言·算法
robin59113 小时前
Linux-通过端口转发访问数据库
linux·数据库·adb
视觉AI3 小时前
如何查看 Linux 下正在运行的 Python 程序是哪一个
linux·人工智能·python
扣脚大汉在网络3 小时前
如何在centos 中运行arm64程序
linux·运维·centos