当前位置: 首页 > news >正文

外贸网站建设需要注意事项wordpress恢复数据库

外贸网站建设需要注意事项,wordpress恢复数据库,网站素材,电子商城网站怎么做目录 什么是协程多线程协程 协程的使用场景协程使用示例Invoke的缺陷协程语法 开启协程终止协程挂起协程的执行原理什么是协程 在Unity中#xff0c;协程#xff08;Coroutines#xff09;的形式是我最喜欢的功能之一#xff0c;我都会使用它来控制需要定时的。 协同程序协程Coroutines的形式是我最喜欢的功能之一我都会使用它来控制需要定时的。 协同程序在主程序运行的同时开启另外一段逻辑处理来协同当前程序的执行。 可能看了这段文字介绍还是有点模糊其实可以用多线程来比较。 多线程 多线程顾名思义多条同时执行的线程。 最初多线程的诞生是为了解决IO阻塞问题如今多线程可以解决许多同样需要异步方法的问题例如网络等。 所谓异步通俗点讲就是我走我的线程你走你的线程。当某个线程阻塞时另一个线程不会受影响继续执行。 需要认识到的是多线程并不是真正意义上的多条线程同时执行。 它的实际是将一个时间段分成若干个时间片每个线程轮流运行一个时间片。 如图将执行步骤切分成极小的粒度然后依次运行 但是由于时间片粒度非常非常小几乎看不出区别所以程序执行效果跟真正意义上的并行执行效果基本一致。 多线程的缺陷 然而多线程有一个坏处就是可能造成共享数据的冲突。 假如有一个变量i 0, Step1_1的操作是进行i操作Step2_1的操作是进行--i操作。 我们预期最终结果i为0。 但由于操作切分得过小可能会发生这样顺序的事 线程1访问i, 将0存到寄存器线程2访问i, 将0存到寄存器线程1i, 得到1线程2--i, 得到-1线程1将1写入到i的内存线程2将-1写入到i的内存最终i的值为-1当然多线程的冲突也有解决方案: 互斥锁.... 但是这些多多少少会付出额外的代价让程序变得臃肿。 协程 CPU有多条线程一条线程可以有多个协程。 协程跟多线程类似也有类似异步的效果注意不是真正的异步。 只不过它的切分粒度不是基于系统划分的时间片而是基于我们编写的yield而且往往粒度更大。 粒度是取决于自己定义什么时候让协程挂起 //下面定义了一个协程函数注意必须使用IEnumerator作为返还值才能成为协程函数。 IEnumerator Test() { for(int i 0; i1000 ; i){ ans i; yield return 0;//挂起下一帧再来从这个位置继续执行。 } j2; yield return 0;//挂起下一帧再来从这个位置继续执行。 j; yield return 0;//挂起下一帧再来从这个位置继续执行。 } 如果划分的粒度过大协程所在的线程可能在相应的帧卡顿。 甚至如果让协程阻塞死循环那么协程所在的整个线程也会阻塞。 因此说协程可以有类似异步的效果但是不是真正的异步。 协程的一大好处就是可以避免数据访问冲突的问题 因为它的粒度相对多线程的大很多所以往往很少出现冲突现象 在上面多线程的例子里使用协程则可以这样 Step1_1: 执行完i, 此时i1Step2_1: 执行完--i, 此时i0最终i的值为0协程的使用场景 对于保证不会阻塞的并行操作且并行性要求不高的并行操作可以使用协程。 更实际来说协程最常用于延时执行等控制时间轴的操作例如N秒后调用指定函数。 利用每帧执行一段协程的特性我们可以引入个带累加计时判断循环然后再超过3秒后跳出循环执行Debug.Log() //3s后执行Debug.Log IEnumerator Test() { for(float timer 0.0f; timer 3.0f ; timer Time.DeltaTime){ yield return 0;//挂起下一帧再来从这个位置继续执行。 } Debug.Log(启动协程3s后); } 但是Unity封装了个更好用的类WaitForSeconds 使这种延时的协程代码更加简洁。 //原本写法for(float timer 0.0f; timer 3.0f ; timer Time.DeltaTime){yield return 0;//挂起下一帧再来从这个位置继续执行。 } //使用WaitForSeconds的写法 yield return new WaitForSeconds(3.0f); 协程使用示例 接下来就展示下协程使用的示例 首先编写好协程函数 IEnumerator TestWaitForSeconds() {//3s后执行Debug.Log; yield return new WaitForSeconds(3.0f); Debug.Log(启动协程3s后); } 然后在某个地方使用StartCoroutine(TestWaitForSeconds())或者StartCoroutine(TestWaitForSeconds) //启动协程3s后执行Debug.logStartCoroutine(TestWaitForSeconds());//启动后继续往下执行... Invoke的缺陷 另外一提Unity还有个一样也是用于延时调用的函数叫Invoke Invoke(test,2.0f); \\延时2秒后执行函数test 但是Invock所要调用的函数必须是空类型返还值还必须得是在当前类里面的方法。 一般来说用协程来解决这样的问题已经绰绰有余而且还有更安全的调用方法而不是只用string类型作为参数的方法因此没必要使用Invoke。 协程语法 开启协程 StartCoroutine(string methodName); 参数是方法名(字符串类型)此方法可以包含一个参数。形参方法可以有返回值StartCoroutine(IEnumerator method); 参数是方法(TestMethod()),此方法中可以包含多个参数。IEnumrator类型的方法不能含有ref或者out类型的参数但可以含有被传递的引用形参方法必须有返回值且返回值类型为IEnumrator,返回值使用yield retuen 表达式或者值或者 yield break语句终止协程 StopCoroutine(string methodName);//终止指定的协程 在程序中调用StopCoroutine()方法只能终止以字符串形式启动的协程StopAllCoroutine();//终止所有协程 挂起 //程序在下一帧中从当前位置继续执行 yield return 0; //程序在下一帧中从当前位置继续执行 yield return null; //程序等待N秒后从当前位置继续执行 yield return new WaitForSeconds(N); //在所有的渲染以及GUI程序执行完成后从当前位置继续执行 yield new WaitForEndOfFrame(); //所有脚本中的FixedUpdate()函数都被执行后从当前位置继续执行 yield new WaitForFixedUpdate(); //等待一个网络请求完成后从当前位置继续执行 yield return WWW; //等待一个xxx的协程执行完成后从当前位置继续执行 yield return StartCoroutine(xxx); //如果使用yield break语句将会导致协程的执行条件不被满足不会从当前的位置继续执行程序而是直接从当前位置跳出函数体回到函数的根部 yield break; 协程的执行原理 协程函数的返回值时IEnumerator,它是一个迭代器可以把它当成执行一个序列的某个节点的指针。 它提供了两个重要的接口分别是Current(返回当前指向的元素)和MoveNext()(将指针向后移动一个单位如果移动成功则返回true)。 yield关键词用来声明序列中的下一个值或者是一个无意义的值。 如果使用yield return x(x是指一个具体的对象或者数值)的话 那么MoveNext返回为true并且Current被赋值为x,如果使用yield break使得MoveNext()返回为false。 如果MoveNext函数返回为true意味着协程的执行条件被满足则能够从当前的位置继续往下执行。否则不能从当前位置继续往下执行。 作者KillerAery 出处http://www.cnblogs.com/KillerAery/ 本文版权归作者和博客园共有欢迎转载但未经作者同意必须保留此段声明且在文章页面明显位置给出原文连接否则保留追究法律责任的权利。 转载于:https://www.cnblogs.com/Roz-001/p/11205700.html
http://www.yutouwan.com/news/377476/

相关文章:

  • wordpress 分类目录插件seo成功案例分析
  • 网站开发的软硬件环境网页制作和设计实验目的
  • 郴州网站开发公司会展设计方案
  • 做实验网站3000部末年禁止app软件
  • 做好网站维护无锡网站开发平台
  • 建设企业网站个人网银网站建设要钞钱
  • 网站建设技术部职责动漫制作专业学什么就业方向
  • 德州万企互联网站制作上海企业网络推广公司
  • 如何远程登录网站服务器专业模板网站制作
  • 建立的网站打开空白中装建设市值
  • 太原网站定制东莞企业画册设计制作公司报价
  • 网络营销产品策略seo排名优化什么意思
  • 网站制作图书搜索视频 网站开发
  • 网站制作职责软件平台公司
  • 郑州网站建设案例html做网站的代码
  • 母婴网站建设wordpress停用谷歌字体
  • 广东网站备案审核时间iis 访问网站需要进行身份验证
  • 临沂做商城网站广州做餐饮的招聘网站
  • 大理网站制作公司无锡网站制作有哪些
  • 加强网站政务服务建设方案政和网站建设wzjseo
  • 学校资源网站 建设厦门市建设局局长
  • 高端用户群浏览网站google地图 wordpress
  • 手机网站架构360提示的危险网站
  • 什么是网站静态化抚顺市 网站建设
  • wordpress 编辑首页wordpress 界面优化
  • 一级域名网站多少钱专业建设网站公司排名
  • 纯静态做企业网站东莞怎么制作网站
  • 做网站路径网站建设找祥赢
  • 天津人工智能建站系统软件公司邮箱申请注册
  • 成都网站建设seo什么是分类信息网站营销