diff options
Diffstat (limited to 'tests/test/theapthread.pp')
-rw-r--r-- | tests/test/theapthread.pp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/tests/test/theapthread.pp b/tests/test/theapthread.pp index bf8131b7dc..5502c298b0 100644 --- a/tests/test/theapthread.pp +++ b/tests/test/theapthread.pp @@ -21,6 +21,7 @@ var writeindex: integer; fifo: array[0..1023] of pointer; done: boolean; + freefifolock: trtlcriticalsection; type ttestarray = array[0..31] of pointer; @@ -79,7 +80,9 @@ begin end; end; freearray(p, sizeof(p) div sizeof(pointer)); + entercriticalsection(freefifolock); freearray(fifo, sizeof(fifo) div sizeof(pointer)); + leavecriticalsection(freefifolock); end; procedure consumer; @@ -91,6 +94,7 @@ begin i := 0; j := 0; k := 0; + entercriticalsection(freefifolock); while not done do begin if readindex <> writeindex then @@ -108,6 +112,7 @@ begin end; end; end; + leavecriticalsection(freefifolock); freearray(p, sizeof(p) div sizeof(pointer)); end; @@ -127,6 +132,7 @@ var produce_thread: tproducethread; consume_thread: tconsumethread; begin + initcriticalsection(freefifolock); done := false; filldword(fifo, sizeof(fifo) div sizeof(dword), 0); readindex := 0; @@ -139,4 +145,5 @@ begin consume_thread.waitfor; produce_thread.free; consume_thread.free; + donecriticalsection(freefifolock); end. |