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

相关推荐
地衣君5 小时前
RISC-V 开发板 + Ubuntu 23.04 部署 open_vins 过程
linux·ubuntu·risc-v
5:005 小时前
云备份项目
linux·开发语言·c++
码农101号6 小时前
Linux中shell编程表达式和数组讲解
linux·运维·服务器
云道轩6 小时前
升级centos 7.9内核到 5.4.x
linux·运维·centos
是小满满满满吗6 小时前
传输层:udp与tcp协议
linux·服务器·网络
爱学习的小道长6 小时前
Ubuntu Cursor升级成v1.0
linux·运维·ubuntu
EelBarb6 小时前
seafile:ubuntu搭建社区版seafile12.0
linux·运维·ubuntu
Xam_d_LM6 小时前
【Latex】Windows/Ubuntu 绘制 eps 矢量图通用方法(drawio),支持插入 Latex 数学公式
linux·ubuntu·科研·矢量图·drawio
Mintimate7 小时前
云服务器 Linux 手动 DD 安装第三方 Linux 发行版:原理与实战
linux·运维·服务器
RussellFans7 小时前
Linux 环境配置
linux·运维·服务器