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

做资源的教育类网站或公司wordpress加载时间两秒

做资源的教育类网站或公司,wordpress加载时间两秒,华建河北住房和城乡建设厅网站,wordpress调整配置一、Dispatch Queue挂起dispatch queue可以被挂起和恢复。使用 dispatch_suspend函数来挂起#xff0c;使用 dispatch_resume 函数来恢复。这两个函数的行为是如你所愿的。另外#xff0c;这两个还是也可以用于dispatch source。一个要注意的地方是#xff0c;dispatch que… 一、Dispatch Queue挂起 dispatch queue可以被挂起和恢复。使用 dispatch_suspend函数来挂起使用  dispatch_resume 函数来恢复。这两个函数的行为是如你所愿的。另外这两个还是也可以用于dispatch source。 一个要注意的地方是dispatch queue的挂起是block粒度的。换句话说挂起一个queue并不会将当前正在执行的block挂起。它会允许当前执行的block执行完毕然后后续的block不再会被执行直至queue被恢复。 还有一个注意点从man页上得来的如果你挂起了一个queue或者source那么销毁它之前必须先对其进行恢复。 二、Dispatch Queue目标指定 所有的用户队列都有一个目标队列概念。从本质上讲一个用户队列实际上是不执行任何任务的但是它会将任务传递给它的目标队列来执行。通常目标队列是默认优先级的全局队列。 用户队列的目标队列可以用函数 dispatch_set_target_queue来修改。我们可以将任意dispatch queue传递给这个函数甚至可以是另一个用户队列只要别构成循环就行。这个函数可以用来设定用户队列的优先级。比如我们可以将用户队列的目标队列设定为低优先级的全局队列那么我们的用户队列中的任务都会以低优先级执行。高优先级也是一样道理。 有一个用途是将用户队列的目标定为main queue。这会导致所有提交到该用户队列的block在主线程中执行。这样做来替代直接在主线程中执行代码的好处在于我们的用户队列可以单独地被挂起和恢复还可以被重定目标至一个全局队列然后所有的block会变成在全局队列上执行只要你确保你的代码离开主线程不会有问题。 还有一个用途是将一个用户队列的目标队列指定为另一个用户队列。这样做可以强制多个队列相互协调地串行执行这样足以构建一组队列通过挂起和暂停那个目标队列我们可以挂起和暂停整个组。想象这样一个程序它扫描一组目录并且加载目录中的内容。为了避免磁盘竞争我们要确定在同一个物理磁盘上同时只有一个文件加载任务在执行。而希望可以同时从不同的物理磁盘上读取多个文件。要实现这个我们要做的就是创建一个dispatch queue结构该结构为磁盘结构的镜像。 首先我们会扫描系统并找到各个磁盘为每个磁盘创建一个用户队列。然后扫描文件系统并为每个文件系统创建一个用户队列将这些用户队列的目标队列指向合适的磁盘用户队列。最后每个目录扫描器有自己的队列其目标队列指向目录所在的文件系统的队列。目录扫描器枚举自己的目录并为每个文件向自己的队列提交一个block。由于整个系统的建立方式就使得每个物理磁盘被串行访问而多个物理磁盘被并行访问。除了队列初始化过程我们根本不需要手动干预什么东西。 三、信号量 dispatch的信号量是像其他的信号量一样的如果你熟悉其他多线程系统中的信号量那么这一节的东西再好理解不过了。 信号量是一个整形值并且具有一个初始计数值并且支持两个操作信号通知和等待。当一个信号量被信号通知其计数会被增加。当一个线程在一个信号量上等待时线程会被阻塞如果有必要的话直至计数器大于零然后线程会减少这个计数。 我们使用函数  dispatch_semaphore_create 来创建dispatch信号量使用函数  dispatch_semaphore_signal 来信号通知使用函数 dispatch_semaphore_wait 来等待。这些函数的man页有两个很好的例子展示了怎样使用信号量来同步任务和有限资源访问控制。 单次初始化 GCD还提供单词初始化支持这个与pthread中的函数  pthread_once 很相似。GCD提供的方式的优点在于它使用block而非函数指针这就允许更自然的代码方式 这个特性的主要用途是惰性单例初始化或者其他的线程安全数据共享。典型的单例初始化技术看起来像这样线程安全的     (id)sharedWhatever     {         static Whatever *whatever nil;         synchronized([Whatever class])         {             if(!whatever)                 whatever [[Whatever alloc] init];         }         return whatever;     } 这挺好的但是代价比较昂贵每次调用  sharedWhatever 函数都会付出取锁的代价即使这个锁只需要进行一次。确实有更风骚的方式来实现这个使用类似双向锁或者是原子操作的东西但是这样挺难弄而且容易出错。 使用GCD我们可以这样重写上面的方法使用函数 dispatch_once     (id)sharedWhatever     {         static dispatch_once_t pred;         static Whatever *whatever nil;         dispatch_once(pred, ^{             whatever [[Whatever alloc] init];         });         return whatever;     } 这个稍微比 synchronized方法简单些并且GCD确保以更快的方式完成这些检测它保证block中的代码在任何线程通过  dispatch_once 调用之前被执行但它不会强制每次调用这个函数都让代码进行同步控制。实际上如果你去看这个函数所在的头文件你会发现目前它的实现其实是一个宏进行了内联的初始化测试这意味着通常情况下你不用付出函数调用的负载代价并且会有更少的同步控制负载。 转载自http://www.dreamingwish.com/dream-2012/gcd-four-the-the-odds-and-ends.html
http://www.pierceye.com/news/190736/

相关文章:

  • 电子商务网站设计说明书开发一个网站
  • 网站制作长沙怎么做淘客手机网站
  • 五路居网站建设wordpress php允许上传文件大小
  • 旅游网站的设计代码下列哪些不属于企业网站建设基本原则
  • 房屋租赁网站开发意义做男鞋的网站
  • 网站负责人可以备案北京建设部网站 信息中心
  • 网站建设分录怎么开四川省城乡住房建设部网站首页
  • 刘家窑网站建设公司如何在网络上推广产品
  • 全球建站东莞市的网站公司哪家好
  • 地方网站发展怎么做链接推广产品
  • 上海制造网站公司网站优化做网站优化
  • vs2012做网站wordpress 页眉
  • 北网站建设重庆建设工程查询网站
  • 给我做网站的人老是给我留点尾巴太原本地网站搭建公司
  • 静态页面网站站标代码写进到静态页面了 怎么不显示呢?自助建站网
  • 免费在线代理网站微信会员卡管理系统
  • 和动物做的网站吗做网站销售怎么样
  • 宝塔面板做织梦网站深圳龙华大浪做网站公司
  • 阿里云建网站费用上海网站建设觉策动力
  • 电子商务网站的建设与维护方法h5第三方收款平台
  • 网站建设所需人力设计广告网站
  • php网站发送邮件动态倒计时网站模板
  • 温州建设网站制作wordpress调用文章简介
  • 大庆市建设局网站刘东科技公司做网站
  • 山东助企网站建设宁波百度关键词推广
  • 宜昌市夷陵区建设局网站培训推广 seo
  • 怎样做安居客网站用幽默的语言来形容网站开发
  • 宜昌网站建设选择宜昌慧享互动手机怎么防止网站跳转
  • 本地的上海网站建设公司汽车租赁网站设计
  • 在哪下载免费的英文版网站模板建站 网站程序有哪些