什么时候应该将 Stream 从 DataWriter 和 DataReader 中分离出来?此 I/O 模型的一般准则是什么?



使用C /CX实现。从DataReaderWriter示例中,它说我们应该在数据磁器对象死之前distachstream(),以防止流关闭。但是在其他DataWriter/DataReader示例代码中,我没有找到更多的证据,这些证据表明这是一项要求,并且文档没有提及更多细节。我的问题是,我们什么时候应该脱离()?例如,如果streamsocket对象超过数据磁器对象,我是否必须distachstream()?还是仅在没有其他参考文献持有基础流对象的寿命时才需要?

还有一个有关datawriter/datareader的问题:在线程A中调用storeasync/loadAsync之后,我们可以继续致电writexxx/readxxx in thread a a thread a n noth block nock等待商店/加载完成吗?

我的问题是,我们什么时候应该脱离()?

正如DataReaderWriter样本中的评论所说:

为了延长流的寿命,请将其从数据磁盘脱离,以便在破坏数据磁器时不会将其关闭。如果我们无法分离流,数据磁器驱动器将关闭基础流,从而阻止其随后在下面的数据标准使用。

此处使用DetachStream方法,因为随后的DataReader需要使用底层流。如果我们不从DataWriter脱离它,则当dataWriter破坏时,它将被关闭。因此,此方法不是必需的。这取决于您的方案,如果关闭DataWriter后不需要使用流,则不能使用此方法。

对于StreamSocket,如果要使用另一个数据作者重复使用套接字,则必须在处置该流之前将流从当前作者分离。因此,从某种意义上说,如果 StreamSocket对象超过 DataWriter对象,则应使用 DetachStream方法。

在线程A中调用Storeasync/loadasync之后,我们可以继续在线程A中调用writexxx/readxxx a thread a a n n obl Block notble等待商店/加载完成吗?

我不确定为什么您要继续致电writexxx/readxxx,而无需等待商店/加载完成。对于StoreAsync方法,它将缓冲区中的数据提交到后备存储。完成编写数据时,我们通常会使用它。因此,当我们调用此方法时,应该没有其他呼叫Writexxx方法。对于LoadAsync方法,我们需要等待它完成,然后再调用readxxx方法,如果数据未完全加载或数据加载操作失败。

相关内容

  • 没有找到相关文章

最新更新