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

相关推荐
二炮手亮子1 天前
Linux命令行合集(涵盖定时任务、防火墙、SHH、线上问题实战等)
linux·运维
张洛闻Eren1 天前
MySQL 维护稳定系统【MySQL第二课】
linux·数据库·mysql·云原生
ltl1 天前
Linux 异步 I/O:epoll 与 io_uring 对比
linux
ltl1 天前
压缩算法工程实践:吞吐、比率与 CPU 权衡
linux
fiveym1 天前
01 - iPXE + Clonezilla 网络装机原理解析
linux·运维·服务器·网络
-今昭-1 天前
Ansible
linux·运维·ansible
mounter6251 天前
MACsec 全景解析:从技术演进、核心架构到 DPU 硬件卸载与 K8s 大规模调度实战
linux·kubernetes·linux kernel·kernel·macsec
IT邦德2 天前
Dify1.6基于ubuntu系统的部署实战
linux·运维·ubuntu
吠品2 天前
Java byte数组与String互转:编码细节与踩坑记录
java·linux·服务器
木白CPP2 天前
Linux 驱动UART子系统源码分析
linux·运维·服务器·驱动开发·嵌入式硬件·开源软件