`
tansitongba
  • 浏览: 484009 次
文章分类
社区版块
存档分类
最新评论

用一个线程模拟多个线程,减少线程数量~

 
阅读更多

游戏开发中,免不了有很多定时任务、动画效果。

这些不是在一次的流程中就能执行完毕的。

正常情况下,我会想到用线程,但是,这么多定时任务,这么多动画效果,哪能这么多线程呢?~

于是,笨木头有笨方法~

自己模拟一下多线程就好了嘛~不就间隔一段时间执行一个函数么,简单~

来,看看:


这是一个线程,要做的工作很简单,就是不断遍历事件列表,发现某个事件到达了执行时间,就执行该事件的回调函数~

那,那,你是不是很想问我,怎么判断事件达到了执行时间呢?~

来,听听我的做法:


怎么样?很简单吧?当前时间减去添加事件时的时间,如果这个时间大于我们设定的事件休眠时间,就执行该事件~

喂~!等等,你怎么不问我I_GameEvent接口是什么?

嘿嘿,是这个:


简单~不解释~

再来理一遍~

1. 有很多个事件类,事件类有一个开始时间,还有休眠时间。

2. 有一个全局线程,不断遍历一个事件列表。

3. 当前时间 - 事件开始时间 大于等于 事件的休眠时间,则执行事件。

4. 没了~完毕~

哎吖~我知道,这个方法也许早就有了~

但是,但是~这是我自己领悟的~没有看任何书籍,没有看任何文章~没有问任何人~

就是在开发过程中领悟的~噢~不行,你们一定要赞我~可怜

好吧,不赞就...不赞咯...委屈

分享到:
评论

相关推荐

    CD租售多线程实验报告.docx

    实现一个CD出租销售店的模拟程序销售线程,销售线程可以有两个或两个以上,启动的时间为200ms。购买数量为5以内的随机数。如果cd数量不足则随机选择等候或放弃。包括实现源代码以及输出record.txt

    一个多线程文件拷贝工具的实现(使用内存映射文件)

    一个多线程的文件拷贝工具的实现,文件操作接口使用了内存映射模型的方式实现,可以指定线程数量,可以在拷贝过程中查看整体的进度信息(进度、速度、剩余时间、已用时间),同时可以查看每个子线程对应的进度信息。...

    多线程文件快速拷贝工具的实现(使用内存映射文件)

    一个多线程的文件快速拷贝工具的实现,文件操作接口使用了内存映射模型的方式实现,可以指定线程数量,可以在拷贝过程中查看整体的进度信息(进度、速度、剩余时间、已用时间),同时可以查看每个子线程对应的进度...

    两个线程,一个做面包,一个卖面包,适合新人学习或当作业

    要求利用线程同步编写一个多线程程序,模拟面包店面包师加工面包和销售面包的过程,当面包师加工一块面包时,打印输出“面包师加工出一块面包,现有面包有**块”;当店员1或店员2卖出一块面包时,打印输出“店员1或...

    模拟龟兔赛跑程序

    要求: 能设置比赛时间,马匹的数量等等。 在任意时间段内马匹的速度是随机的。 开始比赛之后以动画显示赛马过程。 提示:使用多线程

    JAVA-CD租售店

    请实现一个CD出租销售店的模拟程序,该CD租售店,具有可租cd列表,可售cd列表。并具有租、还cd,销售、进货CD方法。假设cd店中可租CD列表5张,可售CD列表5种,每种10张,请实现以下线程 进货线程:只有一个,固定的...

    Python多线程实现支付模拟请求过程解析

    思路:  队列使用说明: multiprocessing.Queue()#用于进程间通信,单主进程与子进程无法通信(使用进程池时尽量不要使用这个) ...根据队列长度创建对应的线程数量  4.把创建的线程放在list

    java cd 销售

    假设你在业余时间经营一个会员制的CD出租销售店,需要一个管理程序:可以增加会员、删除会员,出租、销售,进货,统计等,请设计适当的功能,并实现该程序。 定义几个异常 l 在cd数量不足时,出租和销售cd时抛出...

    .Net开源线程池组件SmartThreadPool.zip

    线程执行一定的时间片后,系统会自动把cpu切换给另一个线程使用,这时还需要保存当 前的线程上下文状态,并加载新线程的上下文状态。当程序中有大量的线程时,每个线程分得的时间片会越来越少,可能会出现线程未处理...

    鱼刺类_线程池Ex的命令详解及框架构建-易语言

    这只是最简单的使用,后续如果热度高的话,再录个视频教程详解吧,学到的好评给一个~ 前 言 · 之前刚接触鱼刺的时候发了个 【鱼刺线程池,自动换IP,队列重试框架...

    API之网络函数---整理网络函数及功能

    EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 EndPagePrinter 指定一个页在打印作业中的结尾 EnumForms 枚举一台打印机可用的表单 EnumJobs 枚举打印队列中的作业 EnumMonitors ...

    压测工具 jmeter -5.3

    如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。线程组是为模拟并发负载而设计。 3、取样器(Sampler):模拟各种请求。所有实际的测试任务都...

    汪文君高并发编程实战视频资源全集

     高并发编程第三阶段30讲 使用Condition实现一个多线程下的Producer-Consumer_.mp4  高并发编程第三阶段31讲 JDK8-StampedLock详细介绍-上_.mp4  高并发编程第三阶段32讲 JDK8-StampedLock详细介绍-下.mp4  高...

    汪文君高并发编程实战视频资源下载.txt

     高并发编程第三阶段30讲 使用Condition实现一个多线程下的Producer-Consumer_.mp4  高并发编程第三阶段31讲 JDK8-StampedLock详细介绍-上_.mp4  高并发编程第三阶段32讲 JDK8-StampedLock详细介绍-下.mp4  高...

    DHCP客户端测试软件(dhcp for xcap)

    3, 将数据发送放到线程中, 规避模拟大量客户端时界面假死的问题. 4, 当客户端限制小于等于50, 则气泡显示trid和ip地址信息. 当大于50, 则气泡显示获取ip地址的数量. V1.0.14 1, 解决监听报文使用的网卡不正确问题...

    chibios 源码 rtos

    允许多个线程位于同一个优先级。 对于同一优先级的线程使用轮转调度。 提供线程,虚拟时钟,信号量,互斥锁,condvars,事件标志,消息,邮箱,I/O队列。 在编译时无静态设置,因此不需要为上面的对象配置最大...

    GFSSimulation:谷歌文件系统模拟实现

    您需要模拟的文件系统是一个带有一个目录和该目录中的多个文本文件的系统。 此文件系统中的文件可以是任意大小。 但是,文件在逻辑上被划分为块,每个块的大小最多为 8192 字节。 文件系统中的文件块实际上作为 ...

    操作系统(实验1进程管理)

     Smss.exe:这是一个会话管理子系统,负责启动用户会话。  Services.exe:系统服务的管理工具。  Lsass.exe:本地的安全授权服务。  Explorer.exe:资源管理器。  Spoolsv.exe:管理缓冲区中的打印和传真作业。...

    用100多行python代码写一个数据库

    查询数据,可以多线程同时查询,每次查询都会打开一个新的日志文件的描述符,所以并行的多个读取不会打架。 写入的话,虽然只是append操作,但不确认多线程对文件进行append操作是否安全,所以建议用一个队列,一个...

    论文研究-GPU加速的高精度数字地面模型建模方法.pdf

    把HASM模拟过程中的有限差分离散、离散后的大规模线性系统求解分别使用GPU进行分解,使用共轭梯度(CG)和预处理共轭梯度方法(PCG)将求解任务分解为可以并行处理的独立的多任务,使得计算任务并行化,同时并行运行...

Global site tag (gtag.js) - Google Analytics