]> granicus.if.org Git - python/commitdiff
Use a constant to specify the number of child threads to create.
authorFred Drake <fdrake@acm.org>
Mon, 10 Apr 2000 15:36:39 +0000 (15:36 +0000)
committerFred Drake <fdrake@acm.org>
Mon, 10 Apr 2000 15:36:39 +0000 (15:36 +0000)
Instead of assuming that the number process ids of the threads is the
same as the process id of the controlling process, use a copy of the
dictionary and check for changes in the process ids of the threads
from the thread's process ids in the parent process.  This makes the
test make more sense on systems which assign a new pid to each thread
(i.e., Linux).

This doesn't fix the other problems evident with this test on Linux.

Lib/test/test_fork1.py

index 361664e00e93cf2f0f8d1b29b0968eb3e8252348..c0e5b44966665d7829dbf9f7f4d2f6d4dc31d3e5 100644 (file)
@@ -14,6 +14,8 @@ LONGSLEEP = 2
 
 SHORTSLEEP = 0.5
 
+NUM_THREADS = 4
+
 alive = {}
 
 def f(id):
@@ -25,14 +27,16 @@ def f(id):
             pass
 
 def main():
-    for i in range(4):
+    for i in range(NUM_THREADS):
         thread.start_new(f, (i,))
 
     time.sleep(LONGSLEEP)
 
     a = alive.keys()
     a.sort()
-    assert a == range(4)
+    assert a == range(NUM_THREADS)
+
+    prefork_lives = alive.copy()
 
     cpid = os.fork()
 
@@ -40,9 +44,8 @@ def main():
         # Child
         time.sleep(LONGSLEEP)
         n = 0
-        pid = os.getpid()
         for key in alive.keys():
-            if alive[key] == pid:
+            if alive[key] != prefork_lives[key]:
                 n = n+1
         os._exit(n)
     else: