首页 > 其他分享 >线程

线程

时间:2024-02-28 17:15:22浏览次数:21  
标签:barrier 队列 dispatch queue 线程 NSThread async

## 1. iOS 中有多少类型的线程? * PThread:跨系统,对C语言的封装。很少使用,不推荐使用。 * NSThread:面向对象,需要手动管理生命周期。 * GCD:Grand Central Dispatch,主打任务与队列。 * NSOperation & NSOperationQueue:基于GCD的封装,面向对象。 ## 2. GCD 有那些队列,默认提供那些队列? * 主队列:dispatch_get_main_queue * 全局并发队列:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) * 自定义队列:dispatch_queue_create("队列名字", DISPATCH_QUEUE_SERIAL) ## 3. GCD 栅栏函数 栅栏函数用来处理多读单写事件,使用如下: ``` dispatch_queue_t queue = dispatch_queue_create("testqueue", DISPATCH_QUEUE_CONCURRENT); dispatch_async(queue, ^{ NSLog(@"----1-----%@", [NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"----2-----%@", [NSThread currentThread]); }); dispatch_barrier_async(queue, ^{ NSLog(@"----barrier-----%@", [NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"----3-----%@", [NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"----4-----%@", [NSThread currentThread]); }); ``` 注意:栅栏函数使用时,不能使用全局队列,只能使用自定义的队列。 #### 3.1 `dispatch_barrier_sync` 和 `dispatch_barrier_async` 的区别? * dispatch_barrier_sync:前面的 block 全部添加并执行完成之后,再执行barrier 中的内容。然后再添加并执行之后的 block 内容。会影响主线程的执行。 * dispatch_barrier_async:将前面的 block 全部添加之后,再添加 barrier,再添加之后的block,然后再依次执行。不影响主线程的执行。

标签:barrier,队列,dispatch,queue,线程,NSThread,async
From: https://www.cnblogs.com/dulinshun/p/18041062/xian-cheng

相关文章

  • python中5种线程锁
    线程安全线程安全是多线程或多进程编程中的一个概念,在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。线程安全的问题最主要还是由线程切换导致的,比如一个房间(进程)中有10颗糖(资源),除此之外......
  • C#中的线程简介
    C#中的线程简介为什么要使用线程同一时间智能运行一个任务,长时间运行的任务独占整个计算机,造成其他程序无法响应。如果程序有bug会造成整个机器停止工作,用户只好重启计算机,造成数据丢失。于是,人们为操作系统引入了线程的概念。线程就是对CPU的虚拟化。一个线程就是一个逻辑......
  • c# winform 多线程
    ​  privateTaskSchedulermpr_ts_UIContext;    privatevoidbutton1_Click(objectsender,EventArgse)    {      progressBar1.Visible=true;      progressBar1.Value=0; //清空进度条      progress......
  • 进程与线程
    什么是线程?​ 线程(thread)是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。​ 说实话这个答案并不能打破我对线程陌生的认知,举个例子,假设你经营着一家物业管理公司。最初,业务量很小,事事都需要你亲力亲为。给老张家修完暖气管道,立马再去老李家换......
  • Java面试题笔记-多线程篇
    创建线程的几种方式继承Thread类,重写run方法实现Runnable接口,实现run方法实现Callable,实现call方法,配合FutureTask获取线程返回结果通过ThreadPoolExecuter线程池获取线程资源这几种方法的底层都是Runnable,Thread是Runnable接口的实现类,Callable配合FutureTask使用......
  • 19.提取token为全局(可以跨线程组)
    1:先提取token值--以下是json提取 2:后置处理beanshell执行__setProperty函数,access_token用新属性token替换3:在测试计划--用户定义的变量-设置全局token--用__P函数去取  ......
  • 类变量在高并发环境下引发的线程安全问题
    ###背景生产环境中,登录接口出现偶发性的异常,排查发现是获取当前时间的工具类抛出异常,以下为代码片段:``````java/***时间工具类*/publicclassDateUtil{ Loggerlogger=LoggerFactory.getLogger(this.getClass());privatefinalstaticSimpleDateFormatshortSdf=new......
  • 多线程系列(十) -ReadWriteLock用法详解
    一、摘要在上篇文章中,我们讲到ReentrantLock可以保证了只有一个线程能执行加锁的代码。但是有些时候,这种保护显的有点过头,比如下面这个方法,它仅仅就是只读取数据,不修改数据,它实际上允许多个线程同时调用的。publicclassCounter{privatefinalLocklock=newReentra......
  • 深入解析Python并发编程的多线程和异步编程
    本文分享自华为云社区《Python并发编程探秘:多线程与异步编程的深入解析》,作者:柠檬味拥抱。在Python编程中,多线程是一种常用的并发编程方式,它可以有效地提高程序的执行效率,特别是在处理I/O密集型任务时。Python提供了threading模块,使得多线程编程变得相对简单。本文将深入探讨thre......
  • QT多线程实现-----问题解决及实现方式
    一、概述恰巧正在做一个多线程通信的项目,具体功能是与下位机交互和文件发送,在子线程中实现命令发送和文件传输。使用movetothread主要遇到以下几个问题:1.Socketnotifierscannotbeenabledordisabledfromanotherthread。2.子线程完成文件传输,发送信号......