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