繁体   English   中英

从流中读取线程安全

[英]Threadsafe read from a stream

如何从流中读取BufferedStream而不使用重locks 我正在使用NAudio从文件读取音频数据。 由于NAudio流具有Read方法的锁定,因此我使用BufferedStream作为包装器。 我只需要读取数据。 但是,我失去了线程安全性。 如何在不使用锁的情况下使流线程安全?
不幸的是,我无法读取大块数据,因为我使用的接口包含方法float GetSample(long) ,该方法一次只能读取1个样本。

我从未使用过该库,但是如果我对您的理解正确,则您的磁盘文件正在锁定,因为您正在读取它,因此没有其他应用程序可以读取它,对吗?

在这种情况下,成为多线程的不是您的应用程序,并且您不需要在应用程序内进行锁定。 但是,您必须确保为只读目的打开了文件,以允许以只读方式访问其他应用程序。

如果NAudio在打开文件时提供了完整的参数集,则可以在允许共享的情况下打开文件,否则,如果NAudio可以通过流进行读取,则可以按需要打开文件然后将流传递给NAudio。

https://msdn.microsoft.com/zh-CN/library/y973b725%28v=vs.110%29.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM