From: aminer on 20 Apr 2010 21:58 Hello, I have updated my parallel compression library to version 1.21 , in the GzipCompress() i have done something like this: ------------------------------- 1 - if count_compress = Tjob(obj).index 2- then 3- begin 4- 5- bzip.compressStream(Tjob(obj).stream,local_stream); 6- local_stream.position:=0; 7- Tjob(obj).fstream.CopyFrom(local_stream,local_stream.size); 8- count_compress:=count_compress+1; 9- local_count:=count_compress; 10- break; 11- end; 12- until false ; ------------------------------------------------ But there is a race condition , since between line 8 and 9 a thread may modify count_compress and you can get a corrupt information in line 9. I have corrected it with something like this: ------------------------------- if count_compress = Tjob(obj).index then begin bzip.compressStream(Tjob(obj).stream,local_stream); local_stream.position:=0; Tjob(obj).fstream.CopyFrom(local_stream,local_stream.size); local_count:=count_compress+1; count_compress:=local_count; break; end; until false ; ------------------------------------------------ And you can download the new updated version from: http://pages.videotron.com/aminer/ Sincerely, Amine Moulay Ramdane.
|
Pages: 1 Prev: Analysing parallel applications with Petri Nets Next: Synch module version 1.0 ... |