import ctypes import threading import os # os.add_dll_directory('c:/mingw64/bin') test = ctypes.CDLL('./a.so') N = 100000 print(0) h = threading.Thread(target=test['loop_acquire'], args = (N,), daemon = True) lock = test['acquire'] h.start() for _ in range(N): lock() h.join() print(1) h = threading.Thread(target=test['loop_aacquire'], args = (N,), daemon = True) lock = test['aacquire'] h.start() for _ in range(N): lock() h.join() print(2) h = threading.Thread(target=test['loop_lock'], args = (N,), daemon = True) lock = test['lock'] h.start() for _ in range(N): lock() h.join() print(3) h = threading.Thread(target=test['loop_flag'], args = (N,), daemon = True) set = test['set'] h.start() for _ in range(N): set() h.join() print(4) h = threading.Thread(target=test['loop_slp'], args = (N, 0), daemon = True) set = test['set'] h.start() for _ in range(N): set() h.join() #print(5) #h = threading.Thread(target=test['loop_slp'], args = (N, 1), daemon = True) #set = test['set'] #h.start() #for _ in range(N): # set() #h.join() print(6) h = threading.Thread(target=test['loop_atomic'], args = (N, ), daemon = True) set = test['atomic_set'] h.start() for _ in range(N): set() h.join()