Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. import sys
  2.  
  3. # Monkey patch os.spawnve on windows to become thread safe
  4. if sys.platform == 'win32':
  5.     import os
  6.     import threading
  7.     from os import spawnve as old_spawnve
  8.  
  9.     spawn_lock = threading.Lock()
  10.  
  11.     def new_spawnve(mode, file, args, env):
  12.         spawn_lock.acquire()
  13.         try:
  14.             if mode == os.P_WAIT:
  15.                 ret = old_spawnve(os.P_NOWAIT, file, args, env)
  16.             else:
  17.                 ret = old_spawnve(mode, file, args, env)
  18.         finally:
  19.             spawn_lock.release()
  20.         if mode == os.P_WAIT:
  21.             pid, status = os.waitpid(ret, 0)
  22.             ret = status >> 8
  23.         return ret
  24.  
  25.     os.spawnve = new_spawnve
  26.  
  27.  
  28.