GCD 队列串行 并行 同步 异步 小例
来源:互联网 发布:对网络直播的看法 编辑:程序博客网 时间:2024/05/12 11:15
发现GCD Swift版有所更改,以后小例都用swift写,练习熟悉。
坚持,每天收获一点。
//
// ViewController.swift
// GCD_demo
//
// Created by apple on 2017/5/31.
// Copyright © 2017年 ZY. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
overridefunc viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
concurrentQueue()
}
overridefunc didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//串行队列
//串行同步和异步的区别主要是:同步会阻塞线程,异步线程继续运行,耗时任务将被搁置执行
func serialQueueDemo(){
let serialQueue =DispatchQueue(label:"zy")//默认是串行队列
#if ture
for indexin1..<10 {
serialQueue.async {//不管异步还是同步都只是开辟一个线程。
Thread.current.name? = "异步线程名字\(index)"
if index==3 || index==7 {
Thread.sleep(forTimeInterval: 5);//
}
print(serialQueue.label,index,Thread.current);
}
print("线程阻塞了吗")
}
#else
for indexin1..<10 {
serialQueue.sync {//不管异步还是同步都只是开辟一个线程。
Thread.current.name? ="同步线程名字\(index)"
if index==3|| index==7 {
Thread.sleep(forTimeInterval:5);
}
print(serialQueue.label,index,Thread.current);
}
print("线程阻塞了吗")
}
#endif
}
//并发队列
func concurrentQueue(){
let concurrentQueyue =DispatchQueue(label:"zy.concurrent", attributes:DispatchQueue.Attributes.concurrent)
for indexin1..<10 {
concurrentQueyue.async {//异步会动态开辟线程,耗时任务也会被异步执行,线程不会阻塞。
Thread.current.name? ="异步线程名字\(index)"
if index==3|| index==7 {
Thread.sleep(forTimeInterval:5);//
}
print(concurrentQueyue.label,index,Thread.current);
}
print("线程阻塞了吗")
}
for indexin1..<10 {
concurrentQueyue.sync {//同步都只是开辟一个线程。会阻塞线程
Thread.current.name? ="同步线程名字\(index)"
if index==3|| index==7 {
Thread.sleep(forTimeInterval:5);
}
print(concurrentQueyue.label,index,Thread.current);
}
print("线程阻塞了吗")
}
}
}
小例参考:
https://github.com/RainManGO/GCD_studyDemo.git
- GCD 队列串行 并行 同步 异步 小例
- GCD简析(同步、异步、串行、并行)
- GCD 主队列/并行队列/全局队列/主队列/串行队列/同步任务/异步任务区别
- GCD介绍。串行队列、并行队列、全局队列、主队列、同步任务、异步任务
- GCD网络多线程---同步执行,异步执行,串行队列,并行队列
- GCD使用 串行并行队列 与 同步异步执行的各种组合 及要点分析
- GCD使用 串行并行队列 与 同步异步执行的各种组合 及要点分析
- ios-day19-02(GCD介绍。串行队列、并行队列、全局队列、主队列、同步任务、异步任务)
- iOS GCD/主队列/并行队列/全局队列/串行队列/同步任务/异步任务区别 含代码
- 串行 并行 同步 异步
- 同步 异步 并行 串行
- 同步 异步 串行 并行
- 同步异步 串行 并行
- GCD同步与异步,串行与并行深入讲解
- GCD编程中串行、并行、同步、异步的执行顺序
- IOS学习 GCD 基础 串行/并行/主线程、同步/异步
- gcd中同步异步并行串行线程数目的关系
- 进程/多线程/同步任务/异步任务/串行队列/并行队列
- 浅谈 Scala 中下划线的用途
- Python 上下文管理器
- ios 消息推送问题分析
- FTP,电子邮件与WWW
- C语言可变参数函数实现
- GCD 队列串行 并行 同步 异步 小例
- C语言大小写转换
- 从科学的角度来理解和田玉---第一篇
- MyEclipse插件开发-在当前代码中增加main函数的插件
- python入门(多态、重载)
- 理解Java中的引用传递和值传递
- Node.js是什么
- CSS中可以和不可以继承的属性
- 运维干货-ssh代理与内网穿透