如何从流中读取 - BufferedStream
而不使用繁重的locks
?我正在使用NAudio
从文件中读取音频数据。由于NAudio
流已锁定Read
方法,因此我使用BufferedStream
作为包装器。我只需要读取数据。但是,我失去了线程安全性。如何在不使用锁的情况下使流线程安全?
不幸的是我无法读取大块数据,因为我使用的接口包含方法float GetSample(long)
,它只能一次读取1个样本。
答案 0 :(得分:0)
我从未使用过那个库,但是如果我理解正确,你的磁盘文件是因为你正在读它而锁定,所以没有其他应用程序可以读取它,这是正确的吗?
在这种情况下,您的应用程序不是多线程的,您不应该在应用程序中使用锁定。但是,您必须确保打开文件以进行只读,以允许只读访问其他应用程序。
如果NAudio在打开文件时提供完整的参数设置,您将能够在允许共享的情况下打开文件,否则如果NAudio可以通过流来读取,则您将能够根据需要打开文件,然后将流传递给NAudio。
https://msdn.microsoft.com/en-us/library/y973b725%28v=vs.110%29.aspx