Closed dwr2001 closed 4 years ago
还有,我也不是很清楚线程怎么关闭和在线程中的函数如何返回值?除了继承原来的thread类
然后就是第一个问题。光凭借你的描述我也无法确定问题出在哪里。
第二个问题:
线程如何关闭?让这个线程的函数执行完毕(return),线程就“关闭了”。具体做法就是这样:在全局设置一个变量should_cancel
。我先假设你的新创建的线程的代码是无限循环的。那么,在每一次循环开始,就检测一下should_cancel
是否为true,如果为true,则做清理工作,然后return。相应地,我想要关闭这个新的线程,就将should_cancel
设置为true。
如何返回值?对于python,我不太清楚。可以去网上查一查资料。
第一个问题我的解决方案是网络通信主线程,pygame事件获取是子线程。启动程序,然后pygame无限循环(关闭键可退出)产生的事件存在全局队列中(队列1000大小),目前还没有上锁,之后会上,然后再通信主线程中无限循环一直从队列中取元素发送,服务端接收后原信息返回,客户端再接收到后打印,有时候正常打印,有时候会卡住,代码是一样的,任务管理器我也清空了有问题的py文件
你把你的代码精简一下,剔除pygame的代码,保留通信的代码,自己debug一下,或者发出来
啊,好像行了:joy:但我不知道哪里的问题,现在就是稳如dog,信息也很流畅,但如果我在关闭页面前产生很多事件,网络虽然接收到了但没有打印完,我需要怎么做呢?使用timesleep吗
现在我在学习socket和pygame时,已经使用thread方法解决了recv阻塞而导致无响应的问题,然后通过多线程实现了游戏和网络双开的局面,信息也能很好的传送,但在测试时,有时候可以准确迅速的传送显示,有时候就会无响应,代码完全一样,是不是我电脑的问题啊?