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.

64 lines
1.2 KiB

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()