是否可以make write();函数非阻塞而不使用线程?
short buffer[BUFFER_LEN];
int readcount;
while ((readcount = sounds[index].read(buffer, BUFFER_LEN)))
write(audio_device, buffer, readcount * sizeof(short));
声音播放,但它会阻止节目直到完成播放。
答案 0 :(得分:3)
使用fcntl
设置文件的O_NONBLOCK
标志可能会有效,但您需要准备好处理部分写入和EWOULDBLOCK
错误。