gpt4 book ai didi

.net - 在多个线程上并行调用 ICsharpCode.SharpZipLib 是否安全

转载 作者:行者123 更新时间:2023-12-02 15:08:46 27 4
gpt4 key购买 nike

我们目前使用 ICsharpCode.SharpZipLib 库的 GZipOutputStream 类进行压缩。我们从一个线程中完成。

我想将我的输入数据流分成块并并行压缩它们。
虽然我担心这个库可能有一些静态数据,这些静态数据会被多个线程覆盖,从而破坏结果流。

任何想法将不胜感激。

最佳答案

标准做法是在编码类时确保所有静态成员都是线程安全的。所以我认为你不太可能因为这个问题而遇到问题。当然,如果您计划使用来自不同线程的相同 GZipOutputStream 那么这肯定会有问题,因为该类的实例成员不是线程安全的。

您可能能够做的是创建一个线程安全的中间人 Stream 类(想想装饰器模式)并将其传递给 GZipOutputStream 。这个自定义流类,称为 ThreadSafeStream ,它本身会接受一个 Stream 实例,并会使用适当的机制来同步对它的访问。

您将为每个线程创建一个 GZipOutputStream 实例,它们都将共享相同的 ThreadSafeStream 包装器实例。我怀疑 ThreadSafeStream 方法中可能会有很多瓶颈,但是您应该能够从中获得一些并行性。

关于.net - 在多个线程上并行调用 ICsharpCode.SharpZipLib 是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5901225/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com