GCD使用(六)串行队列的构造

iOS-多线程编程学习之GCD——串行队列和并发队列(五) Grand Central Dispatch(GCD)有很多部分构成,例如有很好的语言特性,运行库,还提供了系统的、高效的方式来支持具有多核处理器的iOS和OS X设备进行并发事件处理。   BSD子系统,CoreFoundation和Cocoa APIs都已经使用这个增强特性来进行扩展了,因为它可以使得你的系统和应用运行的更快,更有效率,响应更及时。 阅读详情

1。串行队列:

      FIFO方式,并发时的异步操作不会在主线程进行 

   dispatch_queue_create(CStringID , 0): CStringID形式-com.COMPANY.PRODUCT.ID,不需要加@

e.g.

    //串行队列,非mainQueue,非globalQueue

    dispatch_queue_t firstSerialQueue = dispatch_queue_create("com.pixolity.GCD.serialQueue1", 0);

    

    //虽然是异步操作,但仍是FIFO,因为是在自己构造的串行队列中执行

    dispatch_async(firstSerialQueue, ^{

        NSUInteger counter = 0;

        for (counter = 0;

             counter < 5;

             counter++){

            NSLog(@"First iteration, counter = %lu", (unsigned long)counter);

        }

    });    

    dispatch_async(firstSerialQueue, ^{

        NSUInteger counter = 0;

        for (counter = 0;

             counter < 5;

             counter++){

            NSLog(@"Second iteration, counter = %lu", (unsigned long)counter);

        }

    });


    dispatch_async(firstSerialQueue, ^{

        NSUInteger counter = 0;

        for (counter = 0;

             counter < 5;

             counter++){

            NSLog(@"Third iteration, counter = %lu", (unsigned long)counter);

        }

    });

e.g.

  C函数

void firstIteration(void *paramContext){ 

    NSUInteger counter = 0;

    for (counter = 0;

         counter < 5;

         counter++){

        NSLog(@"%@ iteration, counter = %lu",paramContext, (unsigned long)counter);

    }

}

- (void) actionSerial{  

    dispatch_queue_t firstSerialQueue =  dispatch_queue_create("com.pixolity.GCD.serialQueue1", 0);

    dispatch_async_f(firstSerialQueue, (__bridge void *)( @"First"), firstIteration);

    dispatch_async_f(firstSerialQueue, (__bridge void *)( @"Second"), firstIteration);

    dispatch_async_f(firstSerialQueue, (__bridge void *)( @"Third"), firstIteration);

}



【多线程-第二天-GCD的队列介绍-串行队列 Objective-C语言】 阅读详情

相关推荐

GCD编程中串行、并行、同步、异步的执行顺序

串行队列、并行队列、同步、异步是gcd编程中四个非常重要的概念,它们的组合会产生多种不同的执行顺序,在本文,我主要通过代码来罗列一下所有的可能产生的结果,并根据执行结果总结一下gcd编程的一些特点。

feisongfeiqin的博客 6055

GCD 串行队列、并发队列以及同步执行、异步执行

dispatch_async 如果调度到同一个串行队列上,第一次异步调度时会开启一个新线程,后续异步调度会在第一次创建的线程上运行,但肯定会顺序执行。dispatch_sync 任务将在当前线程执行,若同步调度任务到并发队列上,则所有任务在当前线程顺序执行。并行队列:调度任务到并行队列, 将开启多个线程,任务执行结束的顺序无法确定。dispatch_async 如果调度到同一个并行队列上, 将开多个新线程执行,任务乱序执行。串行队列: 调度任务到串行队列,任务将在同一个线程执行,并且顺序执行。

老猿的自留地 831

Objective C 高级进阶— GCD队列浅析(一)

@autoreleasepool { returnUIApplicationMain(argc, argv,nil,NSStringFromClass([AppDelegateclass])); }

疯狂原始人 8452

GCD队列和调度组

GCD的队列可以分为2大类型,分别为串行队列和并发队列 串行队列(Serial Dispatch Queue): 一次只调度一个任务,队列中的任务一个接着一个地执行(一个任务执行完毕后,再执行下一个任务) 创建一个队列 dispatch_queue_t q = dispatch_queue_create(const char *label, dispatch_queue_attr_t attr) 参数: const char *label:队列的名称 ...

小天空的博客 534

GPL vs MIT:独立开发者选择开源协议的法律与商业考量

你可能听过这样的故事:某个开发者用业余时间写了个超好用的工具库,开源后被某大厂悄悄集成到闭源产品里赚得盆满钵满,开发者却连杯奶茶钱都没拿到;也可能听说过另一个案例:开发者选了GPL协议,结果用户修改代码后必须开源,反而推动项目社区快速壮大,最终靠技术服务赚到了钱。这些故事的核心矛盾,都源于开源协议的选择。对于独立开发者(尤其是单枪匹马写代码的个人或小团队),开源协议不是“随便选一个就行”的小事——它是代码的“使用说明书”,更是保护自身权益、规划项目未来的关键工具。

AI天才研究院 1177

opencv实现“找茬”

// 111.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; #define CVX_RED CV_RGB(0xff,0x00,0x00) #define CVX_BLUE CV_RGB(0x00,0x00,0xff)//定义宏,轮廓边框颜色 in

yanHa007的专栏 2094

多线程——GCD(串行队列)

无论队列中所指定的执行的函数是同步还是异步,都会等待前一个任务执行完成后,再调度后面的任务 要不要开线程由执行任务决定 dispatch_sync 不开 dispatch_async 开 开几条线程由谁决定 串行队列,异步执行,开几条,由底层线程池决定 串行队列,同步执行,不开线程 串行队列,异步执行任务 - (void)gcdDemo1 { for (NSInteger index =

iOS开发 1万+

离合器KP点自学习:从原理到工程实践的全景解析

本文全面解析了离合器KP点自学习的原理与工程实践,详细介绍了KP点的物理本质、控制价值及自学习方法。通过扭矩增量式和转速变化式学习法,结合不同变速箱构型的适配策略,提升离合器控制的精度与效率。文章还探讨了液压系统迟滞补偿和摩擦材料老化应对方案,为工程实践提供可靠保障。

weixin_33717117的博客 286

ZOJ 1577 - GCD & LCM

GCD & LCM Time Limit: 2 Seconds      Memory Limit: 65536 KB Given x and y (2 1) p and q are positive integers; 2) GCD(p, q) = x; 3) LCM(p, q) = y. Input x and y, one line for each test.

GooMaple 1064

LLaMA-Factory微调教程2:命令行sft微调

本文介绍了如何使用llama-factory项目在本地运行Qwen2-7B大语言模型进行对话。首先通过llamafactory-cli env查看环境配置,然后使用git lfs下载Qwen2-7B模型。创建配置文件qwen2_7b_instruct.yaml,修改模型路径和模板参数。最后通过llamafactory-cli chat命令启动对话服务,加载模型配置文件和tokenizer,完成环境初始化后即可进行交互式对话。

Cachel Wood的博客 8814

怎么调用onenet平台的API从而读取我们的设备数据和下发命令,做到控制开关

怎么调用onenet平台的API从而读取我们的设备数据和下发命令,做到控制开关 1、首先是怎么读取数据 读取的API是:http://api.heclouds.com/devices/datapoints?devIds=629063002 其中devids这个指的是你的设备ID 然后在我们的headers里面添加一些必要参数,就可以调用了 其中api-key的是你产品里面的master-apikey 把我们的参数写好就可以调用了,选择get方式,点击发送 这个value就是我们需要获取到的参数值了,

zyh960的博客 2万+

iOS开发多线程篇—GCD介绍

iOS开发多线程篇—GCD介绍 一、简单介绍 1.什么是GCD? 全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 纯C语言,提供了非常多强大的函数   2.GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 GCD会自动利用更多的CPU内核(比如双核、四核) GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程) 程序员只需要告...

weixin_33892359的博客 360

2026年大数据开发工程师常见面试选择题

大数据面试高频考点解析 摘要:本文汇总了30道大数据开发面试高频题目,涵盖Hadoop生态、Spark、Flink、Kafka等核心组件。重点包括:1)HDFS架构与特性(5V特征、副本机制);2)MapReduce/Spark原理(Shuffle过程、RDD抽象);3)实时计算(Kafka消费组、Flink Watermark);4)数据仓库设计(分层模型、性能优化)。特别强调数据倾斜、小文件问题等实战场景的解决方案,以及从日志、资源等多维度排查任务异常的方法。掌握这些基础原理和典型问题应对策略,是应对大

不务正业的猿 450

GCD实践——串行队列/并发队列与iOS多线程详解

1.串行队列一次只执行一个线程,按照添加到队列的顺序依次执行; 2.并发队列一次可以执行多个线程,线程的执行没有先后顺序; 3.UI界面所在的线程队列是串行队列。 下面我对上述几个案例进行代码示例:项目已经上传至github:               。中的GCD01项目。 【串行队列示例】 (1)首先导入GCD源码,可以从我的项目中直接复制,总共9个文件: 。

乞力马扎罗的雪CYF的博客 7117

ConvNeXt 系列改进:二次创新 ConvNeXt:结合 RepVGG 结构重参数化,训练多分支、推理单路

2026年的视觉模型赛道呈现出一种有趣的“返璞归真”趋势——在Transformer狂飙数年之后,卷积网络正以全新的姿态回归。这其中,ConvNeXt无疑是纯卷积阵营中最耀眼的明星。从2022年Meta AI首次提出至今,ConvNeXt系列已经走过了近四年的演进之路,衍生出ConvNeXt V2、E-ConvNeXt等多个增强版本。ConvNeXt的7×7深度卷积带来了不错的感受野,却也埋下了推理效率的隐患。

ZXSXJ的博客 232

在 ABAP CDS View 里把 Conversion Functions 用到极致:FLTP 精度、单位换算、货币换算与小数位处理的工程化实践

数据格式转换在真实项目中比业务逻辑更容易引发问题。ABAP CDS中的转换函数(如FLTP_TO_DEC、UNIT_CONVERSION、CURRENCY_CONVERSION和DECIMAL_SHIFT)可帮助在数据库层统一数据口径,避免应用层重复处理。这些函数支持数值精度治理、单位换算、货币转换和小数位调整,能显著提升报表性能并减少逻辑分散。通过将格式转换前移到数据模型层,可以确保服务层和UI层的数据一致性,同时降低接口传输错误风险。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2349

iOS 多线程--GCD 串行队列、并发队列以及同步执行、异步执行

1 什么是队列(queue) 在开始GCD之前先来说一下队列的概念,因为GCD的任务都是在队列中派发的; 队列(queue):是先进先出(FIFO, First-In-First-Out)的线性表。但是在队列前面加上串行和并发这两个定语之后,也就是串行队列、并发队列,有时就容易搞不清楚了,特别是再加上同步和异步的概念之后,有时就更不清楚了。 2 串行队列和并发队列 注意是并发队列(Concurrent Queue),不是并行队列,关于并发和并行的区别见下一节 什么是串行队列和并发队列呢?上面已经说.

u013712343的博客 3131

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

GCD 的同步任务,异步任务,串行队列,并行队列的理解

队列 串行队列(DISPATCH_QUEUE_SERIAL) :放到串行队列的任务,GCD 会 FIFO(先进先出) 地取出来一个,执行一个,然后取下一个,这样一个一个的执行。 并发队列(DISPATCH_QUEUE_CONCURRENT) :放到并行队列的任务,GCD 也会 FIFO的取出来,但不同的是,它取出来一个就会放到别的线程,然后再取出来一个又放到另一个的线程。这样由于取...

Coder 1328

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

GCD串行并发队列扫盲

概述 本篇一起来学习GCD队列相关知识及如何使用。一直以来都是看到过别人这么用,说实在的,还真没有学过文档,也没有深入研究过其所以然。今天一起来看看苹果的GCD队列相关知识,扫一扫盲区吧! 学习完本篇,您会对以下知识点更加理解: 队列串行队列并发队列GCD全局队列GCD主队列创建串行队列创建并发队列 队列基础知识 在大学学习过队列、栈数据结构吧?如果学习过,应该是非常容易理解的。不管

逢个场,作个戏 1077

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

关于GCD中串行队列、并发队列和同步执行、异步执行的探讨

Dispatch Queues Dispatch queue是一个对象,它可以接收任务,并将任务以先到先执行的顺序来执行。Dispatch queue可以使并发的或串行的。并发任务会基于系统负载来合适地并发执行,串行队列同一时间只执行单一任务。 GCD共有三种队列类型: 1、main queue:通过dispatch_get_main_queue()获得,这是一个与主线程相关的串行队列。

邓波的技术博客 4712

GCD的简单使用——同步、异步、串行、并发的具体剖析

什么是GCD? 全称是Grand Central Dispatch 可译为 “牛逼的中枢调度器” 纯C语言,提供了非常多强大的函数。 GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 GCD会自动利用更多的CPU内核(比如双核、四核) GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程) 程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理的代码。

1864

GCD 中的队列

GCD 中的队列 GCD 所提供的 API 虽然简单,但是十分强大。其提供了两种类型的队列,一种串行队列,一种并行队列。 提交到串行队列中的 block 任务遵循先进先出的顺序,由系统维护的线程池中的线程执行。虽然任务的执行线程是不确定的, 但是同一个时刻,同一个队列中的任务只会有一个任务在执行。但是,不同串行队列中的任务是并行的。 提交到并行队列中的任务则不同,系统会根据需要创建线程,并行执行队...

集腋成裘 1533

iOS详解 GCD 串行队列并行队列

iOS串行和并行队列, GCD

pangshishan1的博客 2153

GCD之 串行队列,并行队列,全局队列,主线程队列

/* 进程:正在进行中的程序被称为进程,负责程序运行的内存分配 线程:是进程中一个独立的执行路径,负责程序中代码的实际运行 1.一个进程中至少包含一条线程。可以将耗时的执行路径放在其他线程中执行 2.创建线程的目的就是为了开启一条新的执行路径,运行指定的代码,与主线程中的代码实现同时运行。 3.线程没有完成之前不能被杀掉,但是可以暂停,休眠。 4.并发:指两个或多个

gujinyue 1006

并发编程 - GCD的任务和队列

本篇博客篇幅较长,但这只是 GCD 的入门介绍。事实上,我们讨论的内容还算基础,仅涉及了队列和任务的创建,以及它们如何组合在一起工作。然而,掌握这些基础概念是深入理解 GCD 并有效应用其强大功能的第一步。未来还有更多复杂的机制和高级用法等待我们探索。希望通过这篇文章,你对 GCD 有了初步的认识,以后的博客我们会继续探讨GCD以及其它并发编程相关的内容。

weixin_39339407的博客 1244

iOS-GCD的串行队列和并行队列的任务及实现

什么是GCD GCD全称是GrandCentral Dispatch,纯C语言的,提供了非常多强大的函数 •GCD的优势 1,GCD是苹果公司为多核的并行运算提出的解决方案 2,GCD会自动利用更多的CPU内核(比如双核、四核) 3,GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程) 4,程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码

CuiAnkly的博客 1万+
上一篇: GCD使用(五)分组操作(group)
下一篇: NSTimer的简单使用
berained
博客等级 码龄20年 14粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值