zlib: потокобезопасный zalloc и zfree в C?
Я использую библиотеку zlib C для распаковки данных, полученных из сетевого потока, и у меня есть два потока, работающие в двух отдельных NSThreads. Согласно документации zlib, для распаковки двух разных потоков 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?
1 ответ
Решение
malloc()
а также free()
в Mac OS X уже поточно-ориентированные. Так что просто инициализируйте структуру с Z_NULL
как вы делаете, и вы будете в порядке.