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

标签 c++ c asynchronous io nonblocking

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

short buffer[BUFFER_LEN];
int readcount;

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

声音播放,但它会阻塞程序直到播放结束。

最佳答案

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

关于c++ - 如何对设备执行非阻塞写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4515754/

相关文章:

c++ - 将 SQL Provider 从 SQLOLEDB.1 更改为 SQLNCLI.1 会导致应用程序在通过存储过程访问数据时失败

c++ - 如何确定要包含哪些头文件?

c - printf() 没有被执行

c++ - Protocol Buffer : RepeatedField unique elements

c# - 异步任务 <HttpResponseMessage> 获取 VS HttpResponseMessage 获取

c# - 在返回之前等待任务时会发生什么?

c# - 异步相对于 BeginXXX/EndXXX 有什么优势?

传递函数参数时的 C++ 执行顺序

c++ - 应用程序无法正确启动 0xc0000142 CreateProcessWithLogonW

java - 如何强制垃圾收集器在清理未使用对象的引用之前首先调用 finalize 方法