从流中读取线程安全



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

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

在这种情况下,不是

你的应用变成了多线程,你不应该在应用程序中需要锁。但是,您必须确保打开文件为只读,允许对其他应用程序进行只读访问。

如果 NAudio 在打开文件时提供了完整的参数集,您将能够在允许共享的情况下打开文件,否则,如果可以向 NAudio 传递要从中读取的流,您将能够根据需要打开文件,然后将流传递给 NAudio。

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

最新更新