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

发布于 2024-10-08 18:33:47 字数 252 浏览 4 评论 0原文

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

short buffer[BUFFER_LEN];
int readcount;

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

声音会播放,但它会阻止程序直到播放完毕。

is it possible to make write(); function non-blocking without using threads?

short buffer[BUFFER_LEN];
int readcount;

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

The sounds play, but it blocks program until it finished playing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时间你老了 2024-10-15 18:33:47

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

Using the fcntl to set the O_NONBLOCK flag for the file will probably work, but you need to be prepared to deal with partial writes and EWOULDBLOCK errors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文