2

zlib C ライブラリを使用して、ネットワーク ストリームから受信したデータを解凍しています。2 つのストリームが 2 つの別々の NSThreads で実行されています。zlib のドキュメントによると、2 つのスレッドで 2 つの異なる zlib ストリームを解凍するには、zalloc と zfree をスレッドセーフにする必要があります。現在、Z_NULL を渡しています (以下の inflateinit コード)

zStream.zalloc = Z_NULL;
zStream.zfree = Z_NULL;
zStream.opaque = Z_NULL;
zStream.avail_in = 0;
zStream.next_in = Z_NULL;
int status = inflateInit(&zStream);
if (status != Z_OK)
    DLog(@"zlib setup error");
else
    DLog(@"zlib setup ok");
});

個別のスレッドで複数のストリームを圧縮するために zlib を使用した経験のある人はいますか? zalloc と zfree のスレッドセーフな実装を見た人はいますか?

4

1 に答える 1

4

malloc()free()Mac OS X では、すでにスレッドセーフです。Z_NULLしたがって、あなたがやっているように構造を初​​期化するだけで問題ありません。

于 2012-10-12T20:23:20.633 に答える