# -*- coding: utf-8 -*-
import ctypes
import threading
import time
class d:
def pd(self, value,i):
if value == 5:
print("您真棒,回答正确!")
print("共回答了%s次" %i)
return False
else:
print("回答错误,请下一位同学答题。\n")
return True
def stop(self,tid, exctype):
tid = ctypes.c_long(tid)
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))
def a(self,i):
while True:
# 获取b锁
lockb.acquire()
time.sleep(1)
if tb.is_alive():
aa = int(input("请'001'同学输入值\n"))
i+=1
# 释放a锁
locka.release()
time.sleep(0.8)
if self.pd(aa,i) == False:
self.stop(ta.ident, SystemExit)
else:
break
def b(self,i):
while True:
locka.acquire()
time.sleep(1)
if ta.is_alive():
bb = int(input("请'002'同学输入值\n"))
i+=1
lockb.release()
time.sleep(0.8)
if self.pd(bb,i) == False:
self.stop(tb.ident, SystemExit)
else:
break
if __name__ == "__main__":
locka = threading.Lock()
lockb = threading.Lock()
dd = d()
ta = threading.Thread(None, dd.a,args=(0,))
tb = threading.Thread(None, dd.b,args=(0,))
locka.acquire() # 保证a先执行
ta.start()
tb.start()
Python-初识线程
最新推荐文章于 2022-07-16 15:49:51 发布