Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ZLib / ZLibEx ThreadSave... (https://www.delphipraxis.net/144298-zlib-zlibex-threadsave.html)

Mavarik 4. Dez 2009 13:57


ZLib / ZLibEx ThreadSave...
 
Hallo Zusammen...

Ich nutze gelegentlich die Zlib routinen...

Um eine bessere MultiCPU Auslastung zu erreichen, wolle ich das ganze in einem eigenen Thread starten...

Also entweder funktiert meine Routine nicht, oder die ZLibEx ist nicht threadsave...

Hat jemand damit Erfahrung?

Grüsse Mavarik :coder:

himitsu 4. Dez 2009 14:03

Re: ZLib / ZLibEx ThreadSave...
 
Die ZLib-Unit selber ist erstmal grundsätzlich threadsicher, soweit ich das sehe und wenn jeder Thread seine eigenen Streams/Instanzen verwendet,

aber ob diese Dateien nicht irgendwelche gemeinsamen globalen Resourcen (z.B. Variablen, Zwischenspeicher, Puffer, ...) verwenden, kann ich nicht sagen.
Delphi-Quellcode:
{$L Zlib/adler32.obj}
{$L Zlib/deflate.obj}
{$L Zlib/infback.obj}
{$L Zlib/inffast.obj}
{$L Zlib/inflate.obj}
{$L Zlib/inftrees.obj}
{$L Zlib/trees.obj}
{$L Zlib/compress.obj}
{$L Zlib/crc32.obj}

Zitat:

Also entweder funktiert meine Routine nicht,
Keine Ahnung, wie nutzt du es denn?

Mavarik 4. Dez 2009 14:20

Re: ZLib / ZLibEx ThreadSave...
 
Naja das war ja nicht so viel Source!

Delphi-Quellcode:
Procedure TTask_Packer.Execute;
var
  CS : TZCompressionStream;
begin
  CS := TZCompressionStream.Create(Sout,zcMax);
  CS.CopyFrom(Sin,Sin.Size);
  CS.Free;
end;
Mavarik

himitsu 4. Dez 2009 14:58

Re: ZLib / ZLibEx ThreadSave...
 
Sout, zcMax und Sin stecken auch im Thread und es wird wärenddessen nicht extern drauf zugegriffen?

Also wenn dann wirklich was passiert, dann sind vermutlich Codes in den .obj nicht threadsicher.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz