如何对设备执行非阻塞写入?

时间:2010-12-23 03:58:45

标签: c++ c asynchronous io nonblocking

是否可以make write();函数非阻塞而不使用线程?

short buffer[BUFFER_LEN];
int readcount;

while ((readcount = sounds[index].read(buffer, BUFFER_LEN)))
    write(audio_device, buffer, readcount * sizeof(short));

声音播放,但它会阻止节目直到完成播放。

1 个答案:

答案 0 :(得分:3)

使用fcntl设置文件的O_NONBLOCK标志可能会有效,但您需要准备好处理部分写入和EWOULDBLOCK错误。