前言 NioEventLoopGroup是netty对Reactor线程组这个抽象概念的具体实现,其内部维护了一个EventExecutor数组,而NioEventLoop就是EventExecutor的实现(看名字也可发现,一个是NioEventLoopGroup,一个是NioEventLoop, ...
分类:
Web程序 时间:
2020-06-01 14:02:43
阅读次数:
67
项目开发过程中, 经常遇到单个页面需要发起多个网络请求, 而且还需要控制执行顺序或者所有请求结束后统一处理数据的情况. 最明显的解决方案就是嵌套,但是如果请求多了,代码确实有点恶心 DispatchQueue 串行队列的创建 并行队列的创建, 参数说明 label: 随意命名,队列的标识 qos(服 ...
分类:
编程语言 时间:
2020-03-20 11:09:31
阅读次数:
699
回到主线程 延时执行 开启一个异步线程 开启一个同步线程 线程优先级 分组执行 串行队列:只有一个线程,加入到队列中的操作按添加顺序依次执行。 并发队列:有多个线程,操作进来之后它会将这些队列安排在可用的处理器上,同时保证先进来的任务优先处理。 信号量 oc中dispatch_group_enter ...
分类:
编程语言 时间:
2019-10-18 19:21:49
阅读次数:
134
优化抢票 加入Lock lock.acquire() 锁住 lock.release()释放锁头 进程锁把所著的代码编程串行, join 是把所有的子进程变成了串行。 队列 ipc机制 进程通讯 管道:pipe 基于共享的内存空间 队列:pipe+锁 queue ==put()==放东西 get.( ...
分类:
编程语言 时间:
2019-09-16 21:48:07
阅读次数:
128
实现一个线程安全的栈 这里使用数组来存储栈的数据。不足之处在于本例中的Stack可以无限扩容,更好的是初始化时候指定一个最大容量,防止不断扩容申请内存导致内存不够的问题。这里的线程安全使用一个串行队列来保证,实际上也可以通过加锁或者信号量甚至自旋锁来解决。 实现一个线程安全的队列 ...
分类:
编程语言 时间:
2019-08-22 18:29:28
阅读次数:
90
一、原书第一版154页开始讲解串行队列、并发队列、以及在Dispatch_Async、Dispatch_Sync下面的作用 最后一段代码: 代码如上面,最后输出的数字代表执行顺序。书中最后说顺序会输出两个结果,12345、12435、3一定会在4之前被打印出来 看到这里觉得有些不对,写了代码试了一下 ...
分类:
移动开发 时间:
2018-10-09 23:10:56
阅读次数:
227
讲解GCD的资料看了好多,但都没有解决心中的疑惑: 1.主队列只有一个线程,那么同步和异步执行有什么区别?同步主线程会造成线程死锁,异步不会,为什么呢? 2.同步执行串行队列和同步执行并行队列,有什么区别?同步执行,是在当前线程中执行队列中的任务,就意味着任务都在一条线程中执行,不可能多任务同时执行 ...
分类:
移动开发 时间:
2018-03-01 14:57:27
阅读次数:
258
如果想在dispatch_queue中所有的任务执行完成后在做某种操作,在串行队列中,可以把该操作放到最后一个任务执行完成后继续,但是在并行队列中怎么做呢。这就有dispatch_group 成组操作。 有一个需求是,是想发出三个网络请求,当三个请求全部执行返回结果的时候再做一些操作,不论返回的是失 ...
分类:
其他好文 时间:
2018-01-28 02:15:24
阅读次数:
274
iOS开发之GCD使用总结 GCD是iOS的一种底层多线程机制,今天总结一下GCD的常用API和概念,希望对大家的学习起到帮助作用。 GCD队列的概念 在多线程开发当中,程序员只要将想做的事情定义好,并追加到DispatchQueue(派发队列)当中就好了。 派发队列分为两种,一种是串行队列(Ser ...
分类:
其他好文 时间:
2018-01-04 18:12:09
阅读次数:
223
上面的代码只会打印1 然会就会线程卡死,这是为什么呢? 因为dispatch_get_main_queue()得到的是一个串行队列,串行队列的特点: 一次只调度一个任务,队列中的任务一个接着一个地执行(一个任务执行完毕后,再执行下一个任务) 同步(sync) 操作,它会阻塞当前线程并等待 Block ...
分类:
其他好文 时间:
2017-09-03 14:51:30
阅读次数:
149