1、线程间同步通信
同步:为了有序线程交互,协调线程运行时序。
线程同步手段:互斥量(一个资源同一时间只许一个线程使用)、事件对象、临界区。
Python通过两个标准库thread和threading提供对线程的支持。
ps:感觉C++通过函数创建线程跟thread库蛮像的,偏底层。threading库通过继承重写threading.Thread模块,性能很强。
另一个回答:https://blog.youkuaiyun.com/serena_t/article/details/90208811 python 多线程和C++多线程的区别
2、threading库中的Event对象
Event对象包含一个可由线程设置的信号对象(状态值),为假时事件阻塞线程,为真线程忽略事件,由假到真唤醒线程。
阻塞与等待:https://www.jianshu.com/p/73352d0a14d4
2、Event几种方法及demo
event.isSet():返回event的状态值;
event.wait():如果 event.isSet()==False将阻塞线程;
event.set(): 设置event的状态值为True,所有阻塞池的线程激活进入就绪状态, 等待操作系统调度;
event.clear():恢复event的状态值为False。
from threading import Thread,Event
import time
event=Event()
def light():
print('红灯正亮着')
time.sleep(3)
event.set() #绿灯亮
def car(name):
print('车%s正在等绿灯' %name)
event.wait() #等灯绿 此时event为False,直到event.set()将其值设置为True,才会继续运行.
print('车%s通行' %name)
if __name__ == '__main__':
# 红绿灯
t1=Thread(target=light)
t1.start()
# 车
for i in range(10):
t=Thread(target=car,args=(i,))
t.start()
代码来自:https://www.cnblogs.com/zhangshengxiang/p/9606133.html python之event事件
demo2:https://www.jianshu.com/p/c8dc6f689915 Python多线程-Event(事件对象)
3、相关博客:https://blog.youkuaiyun.com/guoxiang3538/article/details/79376191 线程同步的四种方式
参考文献:https://www.runoob.com/python/python-multithreading.html 多线程 菜鸟驿站
有几个很好的程序,回头自己写一下,Mark。
4、pygame event
网上可以找到pygame的中文文档, 看完没解决我的问题,event事件是怎么触发的。【1】
另有网站介绍一些event type的触发方式,但说明的不是很清楚。【2】【3】
比如说VIDEORESIZE,说是窗口缩放触发,实际测试中,实际只要启动display就会触发。这也算窗口缩放吗,懂行的老哥路过指导下,感谢~
【1】https://max.book118.com/html/2017/0718/122825300.shtm pygame中文文档
【2】https://www.jianshu.com/p/e0986ea0c5cd 2015/11/2用Python写游戏,pygame入门(2):游戏中的事件和显示
【3】https://www.cnblogs.com/msxh/p/4979380.html 【python游戏编程之旅】第三篇---pygame事件与设备轮询