mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
677 B
27 lines
677 B
import sys |
|
|
|
# Monkey patch os.spawnve on windows to become thread safe |
|
if sys.platform == 'win32': |
|
import os |
|
import threading |
|
from os import spawnve as old_spawnve |
|
|
|
spawn_lock = threading.Lock() |
|
|
|
def new_spawnve(mode, file, args, env): |
|
spawn_lock.acquire() |
|
try: |
|
if mode == os.P_WAIT: |
|
ret = old_spawnve(os.P_NOWAIT, file, args, env) |
|
else: |
|
ret = old_spawnve(mode, file, args, env) |
|
finally: |
|
spawn_lock.release() |
|
if mode == os.P_WAIT: |
|
pid, status = os.waitpid(ret, 0) |
|
ret = status >> 8 |
|
return ret |
|
|
|
os.spawnve = new_spawnve |
|
|
|
|
|
|