1.NSThread2.NSOperationQueue3.GCDNSThread:创建方式主要有两种:   [NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil];
和
NSThread *myThread = [[NSThread alloc] initWith            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-05 15:35:40
                            
                                72阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、常驻线程001 常驻线程指的是那些一直存在于内存的线程。002 通过NSRunloop添加runloop的方法有:run方法。通过run方法添加runloop,会不断重复调用runModel:beforeDate:方法来确保自己不会停止runUntilDate和runModel:beforeDate:可以通过指定时间来停止runloop003 如果每个库都通过一个常驻线程这样做不但不能提高CP            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-14 21:37:27
                            
                                102阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1、简介:1.1 iOS有三种多线程编程的技术,分别是:1.、NSThread 2、Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperationQueue的使用)3、GCD  全称:Grand Central Dispatch( iOS多线程编程之Grand Central Dispatch(GCD)介绍和            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-01 22:29:11
                            
                                65阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            大纲: 1、@synchronized 分析2、@synchronized 注意点3、@synchronized 坑点 一、@synchronized分析@property(nonatomic, assign) NSUInteger ticketCount;
- (void)viewDidLoad {
    [super viewDidLoad];
    self.ti            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-09 21:18:58
                            
                                73阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            多线程是我们开发和面试中都会遇到的一个重要概念,相比于其他编程语言和平台,iOS 的多线程使用起来要比较友好和易用一些。但是对于多线程的基本概念,我们还是需要重视起来,这对于我们探索 pthread、NSThread、GCD 以及 RunLoop 都大有裨益。本节的大部分内容基于苹果官方文档。文档地址: About Threaded Programming前导知识POSIXPOSIX Thread            
                
         
            
            
            
            在iOS开发过程中,有时一些花费时间比较长的操作阻塞主线程,导致界面卡顿,那么我们就会创建一个子线程,然后把这些花费时间比较长的操作放在子线程中来处理。可是当子线程中的任务执行完毕后,子线程就会被销毁掉。如果程序中,需要经常在子线程中执行任务,频繁的创建和销毁线程,会造成资源的浪费。 这时候我们就可以使用RunLoop来让该线程长时间存活而不被销毁。来个案例,在睡眠时,通过硬件获取数据信息(比如心            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-27 20:34:49
                            
                                163阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            iOS底层原理 - 常驻线程在 AFN 2.0 时代,会经常看到 AFN 创建一个常驻线程的方式:0️⃣ AFN 2.0 时代的常驻线程+ (NSThread *)networkRequestThread {
    static NSThread *_networkRequestThread = nil;
    static dispatch_once_t oncePredicate;            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-13 23:06:50
                            
                                143阅读
                            
                                                                             
                 
                
                             
         
            
            
            
              单例模式的作用:可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制了实例个数,并节约系统资源。  单例模式的使用场合:在这个应用程序中,共享一份资源(这份资源只需要创建初始化1次)。一、单例模式-ARC的实例(static防止其他类extern引用 修改值)static id_instance;2、重写allocWithZone:方法,在这里创建唯一的实例(注            
                
         
            
            
            
            一 常驻线程:1、2.0 需要常驻线程的作用?2.0常驻线程,用来并发请求,和处理数据回调;避免多个网络请求的线程开销(不用开辟一个线程,就保活一条线程);2、而3.0不需要常驻线程?因为NSURLSession可以指定回调delegateQueue,NSURLConnection而不行;NSURLConnection的一大痛点就是:发起请求后,而需要一直处于等待回调的状态。而3.0后NSURLS            
                
         
            
            
            
            RunLoop的基本应用1:利用RunLoop设置图片 2:利用RunLoop创建精准定时器3:利用RunLoop开启一条常驻线程  具体代码如下   
   //
//  ViewController.m
//  RunLoop
//
//  Created by fe on 2016/11/2.
//  Copyright © 2016年 fe. All rights reserved.
//            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-14 20:37:23
                            
                                116阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            【并发基础】线程池实现原理分析什么是线程池使用线程池的好处ThreadPoolExecutorExecutors核心参数解释工作流程自定义线程线程池注意事项使用ThreadPoolExecutor创建线程池例子如何合理配置线程池CPU密集型IO密集分析角度最佳实践一个基于线程池技术的简单Web服务器 什么是线程池线程池就是系统为了方便管理线程而事先创建一些缓冲线程,它们的集合称为线程池使用线程池            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-20 14:56:17
                            
                                211阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # iOS常驻线程autoreleasepool实现指南
作为一名iOS开发者,你可能会在开发过程中遇到需要在后台线程执行长时间运行的任务,比如网络请求、数据处理等。在这种情况下,合理管理内存变得尤为重要。本文将指导你如何实现iOS常驻线程autoreleasepool,以确保线程安全和内存管理。
## 流程图
首先,我们通过流程图来概览整个实现过程:
```mermaid
flowcha            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-07-21 06:34:28
                            
                                67阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            这里只是分享一下,我在写一个处理线程时遇到的问题以及处理方法。由于各种原因,处理线程需要在主线程启动后,就启动。而这个线程需要在当前类被释放后,而在外部要停止一个线程也不是那么容易,最好让其自动停止,所以当这个线程启动后,就直接一个while循环中,通过一个条件变量来控制这个这个线程的正常寿终与否。当主线程要这个线程停止时, 就更改这个while中的变量即可。如果主线程只是想要这个子线程暂时停止处            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-23 10:46:57
                            
                                66阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在实际项目开发中为了能够给用户更好的体验,有些延时操作我们都会放在子线程中进行。今天我们就来聊聊多线程在实际项目中的运用。我们先来看看多线程的基础知识:1.多线程的原理:        同一时间,CPU只能处理一条线程,也就是只有一条线程在工作。所谓多线程并发(同时)执行,其实是CPU快速的在多线程之间调度(切换)。如果CPU调度线程的时间足够快,就造成了多            
                
         
            
            
            
            可以代替自己创建线程的有多种方法,可以管理thread或者通知或者另开进程。TechnologyDescriptionOperation objectsIntroduced in OS X v10.5, an operation object is a wrapper for a task that would normally be executed on a secondary thread.            
                
         
            
            
            
            一、线程的概要绍 从员工搬货看多线程  现在有一大推货物堆着,如果我有5个员工搬,肯定会比一个员工搬要快速。但是若是有15个员工搬同一堆货物,中间肯定会因为空间以及货物争抢而产生摩擦,甚至会互相掐架。所以,这就不意味着线程越多越好,合理的使用多线程,可以充分提升处理器的利用率,提高工作效率线程与进程  进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-26 10:07:28
                            
                                140阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            我们知道ios 的应用,大部分都是进入后台,就不会执行任何操作,但是 ,很多时候我们希望程序进入后台,也能执行一些检测操作,比如说,应用进入后台,我们仍然可以实时去获取当前的位置信息。下面我们来了解下,ios 获取后台时间的几种方式 根据苹果文档中关于后台执行的描述,任何app都有3分钟左右的后台任务执行时间。 3分钟后,app会被iOS强行挂起。 但是,有几类app允许有“无限的”后台运行            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-08 20:55:07
                            
                                422阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一:性能优化策略  这一系列文章是我的读书笔记,整理一下,也算是温故而知新。性能问题的处理流程  发现/重现问题利用工具剖析形成假设改进代码和设计  在以上的四个步骤中循环反复,直到问题解决。Profile!不要猜!性能优化的主要策略:不要做无用功:不要在启动时花几百ms来做logging,不要为同样的数据做多次查询试图重用:对于创建过程昂贵的对象,要重用而不是重新创建 
   Table Vie            
                
         
            
            
            
            早在一年前,自己就研究过AFN的源码,但是,好多地方还没有完全理解。虽然最近一直在用Swift开发,但是这两天看到了人们争论关于AFN常驻线程的问题,所以又简单的过了一遍。在此,先向大家推荐一个关于AFN的博客,博主写了一系列关于AFN的源码解析和实现原理,因为AFN3.x和AFN2.x相比有较大的更新,文中也有相关的介绍。另外,我单独从中摘出了AFN中关于常驻线程这块的解释。一、关于AFN2.x            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-30 19:35:09
                            
                                45阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.创建线程创建线程使用pthread_create#import "ViewController.h"
#import <pthread/pthread.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
  [super viewDidLoad];