dispatch_group 实现线程同步

比如说,第一步我想先下载三张图片,然后第二步再去主线程刷新imgview 显示图片。
利用dispatch_group 来进行实现 ,简单来讲就四行代码. 就可以让代码按照你想要的顺序进行发生。

使用步骤

  • 创建一个dispatch_group_t

dispatch_group_t downloadGroup = dispatch_group_create();

  • 每次网络请求前先dispatch_group_enter

dispatch_group_enter(downloadGroup);

  • 请求回调后再dispatch_group_leave

dispatch_group_leave(downloadGroup);

  • 当所有enter的block都leave后,会执行dispatch_group_notify的block

dispatch_group_notify(downloadGroup, dispatch_get_main_queue(), ^{});

04-dispatch_group相关推荐

  1. docker 配置使用宿主机的GPU(ubuntu16.04+cuda10.0+cudnn7)

    1. 安装 Docker 卸载旧版本 Docker sudo apt-get remove docker docker-engine docker.io containerd runc 安装新版本 s ...

  2. Ubuntu 16.04 安装后修改屏幕分辨率(xrandr: Failed to get size of gamma for output default)

    ubuntu 16.04 安装后分辨率只有一个选项 1024x768,使用 xrandr 命令出现错误: xrandr: Failed to get size of gamma for output ...

  3. Ubuntu 16.04 安装 Docker - Dependency failed for Docker Application Container

    Docker 安装 由于 apt 官方库里的 Docker 版本可能比较旧,所以先卸载可能存在的旧版本: sudo apt-get remove docker docker-engine docker ...

  4. 【Docker】Ubuntu18.04国内源安装Docker-准备工作(一)

    前言: 安装docker由于很多教程都使用国外源和阿里源,安装失败,这里总结一种国内源的安装方法,亲测有效! 过程: 步骤1:在服务器上创建虚拟机 远程连接服务器,win+R--输入mstsc---- ...

  5. 在Ubuntu18.04上安装opencv 3.4.1

    对于安装opencv有的人一次就成功,而有人安装了N多次才成功.我就是那个安装了N多次的人,每次遇到了很多安装错误,只能通过到网上搜教程资料,解决方法:通过一次次的试错,最终完成了安装.再此提醒第一次 ...

  6. Go 中 time.Parse 报错:year/month/day hour/minute/second out of range 时间格式化为什么是 2006-01-02 15:04:05?

    1. 问题现象 在使用 Go 语言的 time.Parse 解析时间时遇到以下错误: func main() {timeParse, err := time.Parse("2006-11-0 ...

  7. Go 学习笔记(25)— 并发(04)[有缓冲/无缓冲通道、WaitGroup 协程同步、select 多路监听通道、close 关闭通道、channel 传参或作为结构体成员]

    1. 无缓冲的通道 无缓冲的通道(unbuffered channel)是指在接收前没有能力保存任何值的通道. 这种类型的通道要求发送 goroutine 和接收 goroutine 同时准备好,才能 ...

  8. ubuntu14.04安装hadoop2.6.0(伪分布模式)

    版本:虚拟机下安装的ubuntu14.04(64位),hadoop-2.6.0 下面是hadoop2.6.0的官方英文教程: http://hadoop.apache.org/docs/r2.6.0/ ...

  9. Ubuntu 12.04安装Sun JDK 6

    Ubuntu 12.04安装Sun JDK 6 下载 sun jdk 6 bin. 设置权限 chmod +x jdk-6u25-linux-i586.bin 解压文件 ./jdk-6u25-linu ...

  10. Ubuntu18.04运行ORB_SLAM2

    运行环境:Ubuntu18.04 预先安装的库 需要预先安装一些库,如Eign,Sophus,OpenCV等.笔者在阅读<SLAM十四讲>的时候已经安装,在此不再赘述. ORB_SLAM2 ...

最新文章

  1. C#之CLR内存原理初探
  2. 路由器下交换机下计算机不能共享,路由器下接交换机,路由下的电脑和交换机下的电脑如何实现打印机共享?...
  3. 产品经理必备神器推荐
  4. HDS业务定义永续IT架构
  5. 直接在apk中添加资源的研究
  6. 后Kubernetes时代的微服务
  7. 知名大学博士毕业都去哪儿?55所高校大数据揭秘
  8. 软考信息系统项目管理师_项目整体管理---软考高级之信息系统项目管理师010
  9. 这才是你寻寻觅觅想要的 Python 可视化神器!
  10. linux服务器知识学习:了解Linux系统的启动过程
  11. 数据库无限层级分类设计
  12. 关于jar文件打不开的解决方法
  13. 量子统计中的涨落和时间关联函数的概念(谐振子例子)
  14. 狮子座与摩羯座 ---转载
  15. 《车载图像采集仿真应用指南》之基于图像采集的座舱测试
  16. Oracle数据库Clob类型Blob类型与String互转
  17. 游戏是程序员的深坑?
  18. AE中的各种报错提示的原因和解决方案
  19. matlab求解零输入响应,基于matlab的零输入和零状态响应
  20. linux如何打开服务setup,Linux的setup命令启动服务名称和功能

热门文章

  1. 图论:关于二分图的总结(转载)
  2. Python字符串的修改以及传参
  3. 基础学习总结(四)--SQLite
  4. Oracle用户管理
  5. Android KTV
  6. 【OpenCV】图片操作小结:RAW图转image以及image连续保存
  7. OpenCV 【十一】—— 图像去畸变,对极约束之undistort,initUndistortRectifyMap,undistort
  8. 特征点匹配+特征检测方法汇总
  9. ldconfig命令详解,linux动态链接库
  10. C语言的sizeof和strlen