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

相关推荐
逆小舟4 小时前
【Linux】人事档案——用户及组管理
linux·c++
青草地溪水旁4 小时前
pthread_mutex_lock函数深度解析
linux·多线程·pthread
太空的旅行者5 小时前
告别双系统——WSL2+UBUNTU在WIN上畅游LINUX
linux·运维·ubuntu
人工智能训练师7 小时前
Ubuntu22.04如何安装新版本的Node.js和npm
linux·运维·前端·人工智能·ubuntu·npm·node.js
灿烂阳光g7 小时前
domain_auto_trans,source_domain,untrusted_app
android·linux
Ronin3058 小时前
【Linux系统】日志与策略模式
linux·策略模式·日志
ZzzK,9 小时前
JAVA虚拟机(JVM)
java·linux·jvm
Aspiresky10 小时前
浅析Linux进程信号处理机制:基本原理及应用
linux·运维·信号处理
ajassi200011 小时前
linux C 语言开发 (八) 进程基础
linux·运维·服务器
..过云雨11 小时前
05.【Linux系统编程】进程(冯诺依曼体系结构、进程概念、进程状态(注意僵尸和孤儿)、进程优先级、进程切换和调度)
linux·笔记·学习