小程序 多线程运行的优缺点?微信小程序多线程Worker怎么配置?

知梧 1734 2022-09-16

本文关于小程序 多线程运行的优缺点?微信小程序多线程Worker怎么配置?

小程序 多线程运行的优缺点?微信小程序多线程Worker怎么配置?

CPU是以时间片的方式为进程分配CUP处理时间的,当一个进程以同步的方式去完成几件事情时,此进程必须完成了第一件事情以后再做第二件事,如此按顺序地向CPU请求完成要做的事情。在此单线程的工作模式下,如果把CUP看作是一共有100个时间片的话,CPU可能一直都只是花了其中的10个时间片来处理当前进程所要做的事情,只是用到了CPU的10%的时间片,而其他时间都白白浪费了,当然,实际上CPU的工作模式还是做完一件事以后再去做另一件事,只是CUP的处理速度非常快,很快就处理完成所请求的情事。

   为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而互不干扰,如当前进程要完成三件事情1、2、3,那么CPU会分别用10%的时间来同时处理这3件事情,从而让CPU的使用率达到了30%,大大地提高了CPU的利用率。多线程的好处在处理一些特殊的场合其优势尤其明显。比如-文件,你要一边-一边显示进度一边保存,在这种情况下,如果没有用多线程的话,没有意外的话一般都会把主线程阻塞,比如进度条的进度根本没有随着已-的量而变化,堪至是整个窗体都动不了,用多线程就可以很好地解决这个问题。
    这里有一个生活实例可能更好地去理解多线程:回去看你女朋友做饭,正常的话她都会把洗好的菜(肉)先放到锅里煮,然后一边洗别的菜或处理别的事情,如:洗碗、收拾桌台准备开饭,人还是一个人,但她同时做几件事情,这样就可以大大地提高效率。总的一句话就是:CPU还是要花同样多的时间去完成所有的事情,但多线程可以让CPU掺插地同时做多件事情,在视觉上让用户觉得计算机在同时帮他处理多件事情,更好地改善用户体验。
    了解了多线程的好处以后,就要了解应该在什么样的情况下使用多线程技术。因为并不是说所有情况下用多线程都是好事,因为多线程的情况下,CPU还要花时间去维护,CPU处理各线程的请求时在线程间的切换也要花时间,所以一般情况下是可以不用多线程的,用了有时反而会得不偿失。大多情况下,要用到多线程的主要是需要处理大量的IO操作时或处理的情况需要花大量的时间等等,比如:读写文件、视频图像的采集、处理、显示、保存等。

多线程的运用比如:聊天室何时使用多线程技术,何时避免用它,是我们需要掌握的重要课题。多线程技术是一把双刃剑,在使用时需要充分考虑它的优缺点。

多线程处理可以同时运行多个线程。由于多线程应用程序将程序划分成多个独立的任务,因此可以在以下方面显著提高性能: 

优点:
(1)多线程技术使程序的响应速度更快 ,因为用户界面可以在进行其它工作的同时一直处于活动状态;

(2)当前没有进行处理的任务时可以将处理器时间让给其它任务;

(3)占用大量处理时间的任务可以定期将处理器时间让给其它任务;

(4)可以随时停止任务;

(5)可以分别设置各个任务的优先级以优化性能。

 是否需要创建多个线程取决于各种因素。在以下情况下,最适合采用多线程处理: 
(1)耗时或大量占用处理器的任务阻塞用户界面操作;

(2)各个任务必须等待外部资源 (如远程文件或 Internet连接)。
同样的 ,多线程也存在许多缺点 ,在考虑多线程时需要进行充分的考虑。多线程的主要缺点包括: 
(1)等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。

(2)对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。当这种负担超过一定程度时,多线程的特点主要表现在其缺点上,比如用独立的线程来更新数组内每个元素。

(3)线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。

(4)对公有变量的同时读或写。当多个线程需要对公有变量进行写操作时,后一个线程往往会修改掉前一个线程存放的数据,从而使前一个线程的参数被修改;另外 ,当公用变量的读写操作是非原子性时,在不同的机器上,中断时间的不确定性,会导致数据在一个线程内的操作产生错误,从而产生莫名其妙的错误,而这种错误是程序员无法预知的。

文章主要介绍了微信小程序小游戏多线程Worker怎么配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序小游戏多线程Worker怎么配置文章都会有所收获,下面我们一起来看看吧。

  多线程 Worker

  对于游戏来说,每帧 16ms 是极其宝贵的,如果有一些可以异步处理的任务,可以放置于 Worker 中运行,待运行结束后,再把结果返回到主线程。Worker 运行于一个单独的全局上下文与线程中,不能直接调用主线程的方法,Worker 也不具备渲染的能力。 Worker 与主线程之间的数据传输,双方使用 postMessage 来发送数据,onMessage 来接收数据,传输的数据并不是直接共享,而是被复制的。

  步骤

  1. 配置 Worker 信息

  在 game.json 中可配置 Worker 代码放置的目录,目录下的代码将被打包成一个文件:

  配置示例:

  {

  "workers": "workers"

  }

  2. 添加 Worker 代码文件

  根据步骤 1 中的配置,在代码目录下新建以下两个入口文件:

  workers/request/index.js

  workers/request/utils.js

  workers/response/index.js

  添加后,目录结构如下:

  ├── game.js

  ├── game.json

  ├── project.config.json

  └── workers

  ├── request

  │ ├── index.js

  │ └── utils.js

  └── response

  └── index.js

  3. 编写 Worker 代码

  在 workers/request/index.js 编写 Worker 响应代码

  const utils = require('./utils')

  worker.onMessage(function (res) {

  console.log(res)

  })

  4. 在主线程中初始化 Worker

  在主线程的代码 game.js 中初始化 Worker

  const worker = wx.createWorker('workers/request/index.js') // 文件名指定 worker 的入口文件路径,绝对路径

  5. 主线程向 Worker 发送消息

  worker.postMessage({

  msg: 'hello worker'

  })

  worker 对象的其它接口请看 worker接口说明

  Tips

  Worker 最大并发数量限制为 1 个,创建下一个前请用 Worker.terminate 结束当前 Worker

  Worker 内代码只能 require 指定 Worker 路径内的文件,无法引用其它路径

  Worker 的入口文件由 wx.createWorker 时指定,开发者可动态指定 Worker 入口文件

  Worker 内不支持 wx 系列的 API

  Workers 之间不支持发送消息 

关于“微信小程序小游戏多线程Worker怎么配置”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“微信小程序小游戏多线程Worker怎么配置”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

上述就是小编为大家整理的小程序 多线程运行的优缺点?微信小程序多线程Worker怎么配置的相关内容。

国内(北京、上海、广州、深圳、成都、重庆、杭州、西安、武汉、苏州、郑州、南京、天津、长沙、东莞、宁波、佛山、合肥、青岛)Finclip软件分析、比较及推荐。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Windows Server Core 2022--(3)安装PPTP/L2TP
下一篇:自己设计大学排名-数据库实践(中国大学设计排名)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~