ctypes範例¶
使用這個模塊需要以下步驟:
加載動態鏈接庫shared_atomic.loaddll(),
atomic = shared_atomic.loaddll()
在進程/線程之間共享ctypes
v = multiprocessing.Value(ctypes.c_long, 100, lock=False)
a = multiprocessing.Array(ctypes.c_long, 100, lock=False)
如果只用多線程模式
a = ctypes.c_long(100)
使用ctypes.byref得到指向共享亦是的指針
aref = ctypes.byref(a, 0)
將指針傳給原子函數
atomic.long_get_and_set(aref,ctypes.c_long(100))
processlist = []
for i in range(10000):
processlist.append(Process(target=atomic.long_get_and_set, args=(aref,ctypes.c_long(100))))
for i in range(10000):
processlist[i].start()
for i in range(10000):
processlist[i].join()