[英]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.