Swift GCD
var queue: dispatch_queue_t = dispatch_get_main_queue()// 主线程
queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)// 后台执行
// 异步执行队列任务
dispatch_async(queue, { () -> Void in
print("开新线程执行")
})
// 延时执行
var delta:Int64 = Int64(2 * NSEC_PER_SEC)// 2s后执行,可能不仅限于2s
delta = Int64(100 * NSEC_PER_MSEC)//100毫秒后执行
// NSEC_PER_MSEC
let when: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, delta)
dispatch_after(when, queue) { () -> Void in
print("dispatch_after")
}
// 只执行一次
struct Static {
static var onceToken: dispatch_once_t = 0
static var value: String!
}
dispatch_once(&Static.onceToken, { () -> Void in
Static.value = "单例模式"
})
print("\(Static.value)")
dispatch_once(&Static.onceToken, { () -> Void in
Static.value = "改变值"
})
print("\(Static.value)")
// 分组执行
let group = dispatch_group_create()
queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)// 默认优先级执行
for (var i = 0; i<10; i++) {
//异步执行队列任务
dispatch_group_async(group, queue, { () -> Void in
Static.value = Static.value + "1"
print("\(Static.value)")
})
}
// 分组队列执行完毕后执行
dispatch_group_notify(group, queue) { () -> Void in
print("dispatch_group_notify")
}
// 串行队列:只有一个线程,加入到队列中的操作按添加顺序依次执行。
let serialQueue = dispatch_queue_create("yangj", DISPATCH_QUEUE_SERIAL)
for (var i = 0; i<10; i++) {
//异步执行队列任务
dispatch_async(serialQueue, { () -> Void in
//Static.value = Static.value + "1"
//println("\(Static.value)")
})
}
// 并发队列:有多个线程,操作进来之后它会将这些队列安排在可用的处理器上,同时保证先进来的任务优先处理。
let globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
for (var i = 0; i<10; i++) {
//异步执行队列任务
dispatch_async(globalQueue, { () -> Void in
//Static.value = Static.value + "1"
//println("\(Static.value)")
})
}
}
Swift GCD的更多相关文章
- swift GCD使用指南
swift GCD使用指南 Grand Central Dispatch(GCD)是异步执行任务的技术之一.一般将应用程序中记述的线程管理用的代码在系统级中实现.开发者只需要定义想执行的任务并追加到适 ...
- Swift GCD的使用1
typealias Task = (cancel : Bool) -> () func delay(time : NSTimeInterval, task : () -> ()) -> ...
- swift版的GCD封装
swift版的GCD封装 说明 本人针对swift封装了GCD,包括GCDQueue,GCDGroup,GCDTimer以及GCDSemaphore,使用较为便利. 源码 https://github ...
- Awesome Swift
Awesome Swift https://github.com/matteocrippa/awesome-swift A collaborative list of awesome Swift re ...
- iOS学习路线图
一.iOS学习路线图 二.iOS学习路线图--视频篇 阶 段 学完后目标 知识点 配套学习资源(笔记+源码+PPT) 密码 基础阶段 学习周期:24天 学习后目标: ...
- iOS自定义弹出视图、收音机APP、图片涂鸦、加载刷新、文件缓存等源码
iOS精选源码 一款优秀的 聆听夜空FM 源码 zhPopupController 简单快捷弹出自定义视图 WHStoryMaker搭建美图(贴纸,涂鸦,文字,滤镜) iOS cell高度自适应 有加 ...
- 【swift】BlockOperation和GCD实用代码块
//BlockOperation // // ViewController.swift import UIKit class ViewController: UIViewController { @I ...
- swift 多线程及GCD
1.基本概念 1)进程: 进程是指在系统中正在运行的一个应用程序.每个进程之间是独立的,每个进程运行在其专用且受保护的内存空间里.某进程内的线程在其它进程不可见 2)线程: 1个进程要执行任务,必须有 ...
- Swift - 多线程实现方式(3) - Grand Central Dispatch(GCD)
1,Swift继续使用Object-C原有的一套线程,包括三种多线程编程技术: (1)NSThread (2)Cocoa NSOperation(NSOperation和NSOperationQueu ...
随机推荐
- 分布式系列 - dubbo服务发布
单元测试OK,封装为Dubbo服务. 添加依赖 pom.xml <properties> <dubbo.version>2.5.3</dubbo.ve ...
- caffe平台快速搭建:caffe+window7+vs2013
caffe平台快速搭建:caffe+window7+vs2013 1.caffe-master下载 采用微软提供Windows工具包(caffe-master),下载地址:https://github ...
- svn的分支
svn的分支使用 新建一个项目的时候,选择建立自带trunk,branches和tags文件夹的. 其中trunk作为主开发. 有需要的时候,从trunk创建分支到对应的branches下面,新建分支 ...
- java httpUtil
public class HttpUtils { public static String getContent(String url, Map<String, String> heads ...
- url拼接
在做网页抓取的时候经常会遇到一个问题就是页面中的链接是相对链接,这个时候就需要对链接进行url拼接,才能得到绝对链接. url严格按照一定的格式构成,一般为如下5个字段: 详细可参考RFC:http: ...
- 如何更改nagios监控默认的检查时间
/usr/local/nagios/etc/nagios.cfg: interval_length 表示时间单位,默认为60,即1分钟 /usr/local/nagios/etc/objects/se ...
- Mysql数据库实用语句集
mysql实用语句 (1).从第0行开始取,取3行(一般用于分页)select * from student limit 0,3 (2).查看当前数据库编码 show variables like ' ...
- JavaScript 获取对象属性和方法
ShineJaie 原创整理,转载请注明出处. 一.获取对象属性和方法 Object.keys() 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返 ...
- nginx 日志搜集解决方案
# nginx 日志搜集解决方案 ## 系统环境描述 ``` java8 logstash --监控nginx日志文件 ``` ## 技术描述 ``` 通过logstash监控nginx access ...
- IdentityServer4在Asp.Net Core中的应用(一)
IdentityServer4是一套身份授权以及访问控制的解决方案,专注于帮助使用.Net 技术的公司为现代应用程序建立标识和访问控制解决方案,包括单点登录.身份管理.授权和API安全. 下面我将具体 ...