浏览代码

* MOve update of threadqueuetail to critical section

git-svn-id: trunk@30159 -
michael 10 年之前
父节点
当前提交
af9798c761
共有 1 个文件被更改,包括 2 次插入3 次删除
  1. 2 3
      rtl/objpas/classes/classes.inc

+ 2 - 3
rtl/objpas/classes/classes.inc

@@ -345,6 +345,8 @@ begin
       Result:=ThreadQueueHead;
       Result:=ThreadQueueHead;
       if Result<>Nil then
       if Result<>Nil then
         ThreadQueueHead:=ThreadQueueHead^.Next;
         ThreadQueueHead:=ThreadQueueHead^.Next;
+      if Not Assigned(ThreadQueueHead) then
+        ThreadQueueTail := Nil;
     finally
     finally
       System.LeaveCriticalSection(ThreadQueueLock);
       System.LeaveCriticalSection(ThreadQueueLock);
     end;
     end;
@@ -373,9 +375,6 @@ begin
   tmpentry := PopThreadQueueHead;
   tmpentry := PopThreadQueueHead;
   while Assigned(tmpentry) do
   while Assigned(tmpentry) do
     begin
     begin
-    { step 1: update the list }
-    if not Assigned(ThreadQueueHead) then
-      ThreadQueueTail := Nil;
     { step 2: execute the method }
     { step 2: execute the method }
     exceptobj := Nil;
     exceptobj := Nil;
     try
     try