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服务器磁盘应该如何合理分区?
linux·运维·服务器
贵沫末1 天前
Ubuntu——常用软件安装
linux·运维·ubuntu
Doraemomo1 天前
Linux内核驱动开发——中断与定时器
linux·运维·驱动开发
2301_808414381 天前
Linux中动静态库的理解
linux·运维·服务器
M78佐菲1 天前
ARM学习笔记(11)
linux·arm开发·笔记·嵌入式硬件·学习
M78佐菲1 天前
ARM学习笔记(10)
linux·arm开发·笔记·嵌入式硬件·学习
半仙白桑1 天前
内核篇第十五讲:system-V共享内存
linux·共享内存·shmget·shmat·shmdt·shmctl
一条破秋裤1 天前
Linux 线程创建:pthread_create 与基本回收
java·linux·运维
s6516654961 天前
IDT和GDT是什么
linux
Android系统攻城狮1 天前
Linux Gstreamer深度解析之gst_audio_decoder_set_estimate_rate调用流程与实战(四十五)
linux·gstreamer音视频·音视频进阶