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

相关推荐
pride.li10 小时前
开发板和Linux--nfs服务挂载
linux·运维·服务器
looking_for__10 小时前
【Linux】应用层协议
linux·服务器·网络
BB_CC_DD11 小时前
Linux截图工具(ubuntu18.04+flameshot(火焰截图))
linux
云泽80811 小时前
不止是命令:Linux 高频指令实战 + 芯片架构底层逻辑
linux·运维·服务器
j_xxx404_12 小时前
Linux:基础IO
linux·运维·服务器
wdfk_prog12 小时前
[Linux]学习笔记系列 -- [drivers][i2c]i2c-dev
linux·笔记·学习
Trouvaille ~13 小时前
【Linux】网络编程基础(二):数据封装与网络传输流程
linux·运维·服务器·网络·c++·tcp/ip·通信
旅途中的宽~14 小时前
【深度学习】通过nohup后台运行训练命令后,如何通过日志文件反向查找并终止进程?
linux·深度学习
dump linux15 小时前
内核驱动调试接口与使用方法入门
linux·驱动开发·嵌入式硬件
Trouvaille ~15 小时前
【Linux】网络编程基础(三):Socket编程预备知识
linux·运维·服务器·网络·c++·socket·网络字节序