-
线程保活封装
目录 线程保活线程保活MJPermenantThread.h文件#import <Foundation/Foundation.h>typedef void (^MJPermenantThreadTask)(void);@interface MJPermenantThread : NSObject/** 开启线程 *///- (void)run;/** 在当前子线程执行一个任务 */- (void)executeTask:(MJPermenantThreadTask)task;...…
-
NSThread
目录 基本使用 创建线程 线程保活基本使用//获取当前线程NSThread * currentThread = [NSThread currentThread];NSLog(@"currentThread = %@",currentThread);//获取主线程NSThread * mainThread = [NSThread mainThread];NSLog(@"mainThread=%@",mainThread);//查看是否是主线程BOOL isMain = [NSThrea...…
-
NSOperation
目录 同步 异步 其它NSOperation 底层是GCD,比GCD多了一些简单实用的功能,使用更加面向对象。同步在当前线程执行任务//invocationOperationNSInvocationOperation * operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(_test) object:nil];[operation start];//blockOperati...…
-
GCD2
目录 sync相关Demo async相关Demo group相关Demo dispatch_barrier_(a)sync相关Demo perform相关Demo interviewsync相关Demo先看队列是串行并行,再看执行时同步异步 放在串行队列里的任务一定是一个执行完再取下一个,是有顺序的 同步执行一定是整个任务块执行完再返回的总结1: 只要在主线程执行 dispatch_sync(dispatch_get_main_queue(), ^{}); 必定...…
-
GCD
目录 概念介绍 同步 异步 线程组 其它 barrier semaphore dispatch_source概念介绍旨在替代NSThread等线程技术,充分利用设备的多核。首先先看几个概念: 同步:在当前线程执行任务,不具备开启新线程的能力dispatch_sync 异步:在新线程中执行任务,具备开启新线程的能力dispatch_async串行队列:在队列里的多个任务按先后顺序,一个一个取出。dispatch_queue_t serialQueue = disp...…
-
线程
目录 进程线程的相关概念 多线程 锁进程线程的相关概念一、进程与线程介绍1、进程系统中正在运行的一个应用程序 每个进程独立 每个进程运行在自己独立的内存空间内2、线程 进程的基本执行单元 一个进程所有的任务都在线程中执行 进程至少要有一条线程 同进程中的不同线程可以共享数据,但拥有自己的栈空间和独立的执行序列3、根本区别 进程是操作系统进行资源分配的基本单位,线程是操作系统进行任务调度的基本单位二、线程相关如果线程数非常多,CPU会在N个线程之间切换,消耗大量的CPU...…
-
参考:线程同步(二)
参考书籍 《多线程编程指南》 原著:Apple Inc. 翻译:謝業蘭 【老狼】目录 使用锁 使用条件使用锁 使用POSIX互斥锁 为了锁住和解锁一个互斥锁,你可以使用 pthread_mutex_lock 和 pthread_mutex_unlock 函数。 当你用完一个锁之后,只要简单的调用 pthread_mutex_destroy 来释放该锁的数据结构。 使用NSLock类 //应确保不同的线程使用的是同一把锁。否则保护会失效self.money...…
-
参考:线程同步(一)
参考书籍 《多线程编程指南》 原著:Apple Inc. 翻译:謝業蘭 【老狼】 参考文章:多线程、线程安全和锁目录 同步工具 同步的成本和性能 线程安全和信号量 线程安全设计的技巧 使用原子操作应用程序里面多个线程的存在引发了多个执行线程安全访问资源的潜在问题。两 个线程同时修改同一资源有可能以意想不到的方式互相干扰。 但涉及到线程安全时,一个好的设计是最好的保护。避免共享资源,并尽量减少 线程间的相互作用,这样可以让它们减少互相的干扰。同步工具 原子操作 ...…
-
参考:线程管理
参考书籍 《多线程编程指南》 原著:Apple Inc. 翻译:謝業蘭 【老狼】目录 线程成本 创建一个线程 配置线程属性 编写你线程的主体入口点 中断线程每个应用程序启动时候都是一个线程,它执行程序的 main 函数。 应用程序可以生成额外的线程,其中每个线程执行一个特定功能的代码。 每个线程都拥有它自己的执行堆栈,由内核调度独立的运行时间片。 一个线程可以和其他线程或其他进程通信,执行 I/O 操作,甚至执行任何你想要它完成的任务。 因为它们处于相同的进程空间,所以一个独立...…
-
参考:关于多线程编程
参考书籍 《多线程编程指南》 原著:Apple Inc. 翻译:謝業蘭 【老狼】目录 什么是多线程 线程术语 多线程的替代方法 线程支持 设计技巧 什么是多线程多线程是一个比较轻量级的方法来实现单个应用程序内多个代码执行路径。从技术角度来看,一个线程 = 应用级结构 + 内核级结构。 1.应用级结构:存储函数调用堆栈以及管理线程的属性和状态的结构。 2.内核级结构:协助调度线程事件,并抢占式调度一个线程到可用的内核之上。调度点由系统决定。如果没有内核级结构,在某一个进程中当...…
-
RunLoop(2)
墙裂推荐:深入理解RunLoop目录 runloop 与 定时器 runloop 与 gcd runloop 与 selector runloop 与 UI刷新等 runloop 与 事件响应和手势 runloop 与 autoreleasePool runloop 与 卡顿检测 CADisplayLinkrunloop 与 定时器一、timertimer 事件会唤醒runloop从调用栈中我们可以看到__CFRunLoopDoTimers的字样(lldb) bt* t...…
-
RunLoop(1)
参考文章:iOS底层原理 - RunLoop总结目录 介绍 runloop与线程 runloop相关类 runloop的源 runloop的运行逻辑 主线程的runloop在哪启动介绍一、介绍run loop 是一个事件处理循环,用来不停的调度工作以及处理输入事件。RunLoop的基本作用保持程序的持续运行处理App中的各种事件(比如触摸事件、定时器事件等)节省CPU资源,提高程序性能:该做事时做事,该休息时休息二、应用范畴定时器(Timer)、PerformSelecto...…
-
参考:RunLoop(三)
参考书籍 《多线程编程指南》 原著:Apple Inc. 翻译:謝業蘭 【老狼】目录 配置RunLoop的源 配置RunLoop的源一、定义自定义输入源二、配置定时源 为了创建一个定时源,你所需要做只是创建一个定时器对象并把它调度到你的 run loop。Cocoa 程序中使用 NSTimer 类来创建一个新的定时器对象,而 Core Foundation 中使用 CFRunLoopTimerRef 不透明类型。本质上,NSTimer 类是 Core Foundation 的简单扩展...…
-
参考:RunLoop(二)
参考书籍 《多线程编程指南》 原著:Apple Inc. 翻译:謝業蘭 【老狼】目录 何时使用RunLoop 使用RunLoop对象 何时使用RunLoopiOS程序中 UIApplication 的 run 方法(或 Mac OS X 中的 NSApplication)作为程序启动步骤的一部分,它在程序正常启动的时 候就会启动程序的主循环。类似的,RunApplicationEventLoop 函数为 Carbon 程序 启动主循环。如果你使用 xcode 提供的模板创建你的程序,...…
-
参考:RunLoop(一)
参考书籍 《多线程编程指南》 原著:Apple Inc. 翻译:謝業蘭 【老狼】 参考文章:iOS底层原理 - RunLoop总结目录 RunLoop剖析什么是runloop?Run loops 是线程相关的的基础框架的一部分。一个 run loop 就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。使用 run loop 的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。每个线程,包括程序的主线程都有与之对应的 run loop object。只有辅助...…
-
获取Class数据结构信息
参考:CoderMJLee目录 MJClassInfo.h源码 使用MJClassInfo.h源码//// MJClassInfo.h// TestClass//// Created by MJ Lee on 2018/3/8.// Copyright © 2018年 MJ Lee. All rights reserved.//#import <Foundation/Foundation.h>#ifndef MJClassInfo_h#define MJClas...…
-
WebViewJavaScriptBridge原理分析
参考:iOS之WebViewJavascriptBridge浅析 重要:深入剖析 WebViewJavascriptBridge目录 框架结构 js调用原生的核心逻辑框架结构 层级 源文件 接口层 WebViewJavascriptBridge && WKWebViewJavascriptBridge 实现层 WebViewJavascriptBridg...…
-
WebViewJavaScriptBridge使用
参考:一篇文章了解JsBridge之IOS篇 参考:WebViewJavaScriptBridge 基本使用目录 介绍 基本使用介绍WebViewJavaScriptBridge 用于 WKWebView & UIWebView 中 OC 和 JS 交互的框架。把 OC 的方法注册到桥梁中,让 JS 去调用。把 JS 的方法注册在桥梁中,让 OC 去调用。基本使用一、使用pod管理pod ‘WebViewJavascriptBridge’二、OC注册方法(JS调用)1、O...…
-
JavaScriptCore
美团技术团队:深入理解JSCore 重要:深入浅出 JavaScriptCore 重要:上面文章中在 Github 上的Demo目录 iOS的JavaScriptCore框架 JSExport协议 DemoiOS的JavaScriptCore框架JavaScriptCore是苹果公司提供的JavaScript引擎,用于在iOS和macOS上执行JavaScript代码。 它是WebKit框架的一部分,WebKit是苹果用于处理Web内容的开源引擎。 JavaScrip...…
-
WebKit
美团技术团队:深入理解JSCore目录 webkit的组成 JSCore值得注意的Featurewebkit的组成每个浏览器都有自己的内核,Safari的内核就是WebKit 简单点讲,WebKit就是一个页面渲染以及逻辑处理引擎,前端工程师把HTML、JavaScript、CSS这“三驾马车”作为输入,经过WebKit的处理,就输出成了我们能看到以及操作的Web页面。WebKit Embedding API 负责浏览器UI与WebKit进行交互的部分,WebKit Port...…