队列组  让队列里的任务同时执行,当任务都执行完毕时,再以通知的形式告诉程序员。举例,同时下载两张图片,两张图片都下载完了,在合成成一张。 代码:#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageView1; @proper
一、什么是线程安全?多线程操作共享数据不会出现想不到的结果就是线程安全的,否则,是线程不安全的。比如:多个线程同时访问或读取同一共享数据,每个线程的读到的数据都是一样的,也就不存在线程不安全。如果多个线程对同一资源进行读写操作,那么每个线程读到的结果就是不可预料的,线程是不安全的。        因此,线程安全,一定是对多线程而言的;单个
IOS线程及队列的使用最近搞一款塔防游戏,提到塔防,自然就想到了A星寻路。的确,它是一种高效的寻路算法。但当很多怪物同时在调用A星算法来寻找一条最近的路径来到达目的地时,我发现会很卡。我都不能接受这个卡屏,更何况是玩家呢。所有我一直都在努力去优化A星算法。虽然有所改善,但卡的问题还是存在。实在没辙了,我想到了队列线程。之前都没接触过这个东东,还好在网上找到很详细的线程介绍。当然,我只是用到了其中
转载 2023-08-25 22:17:11
96阅读
问题:ios 谁能分析下多线程死锁问题,感谢,分析图一二为什么是这个结果?(问题帖子链接:http://zhidao.baidu.com/link?url=Lr9sNchrdnCLJdoc73WeHfL3lcu7lBvyKQ2hBrF2jbyM3wkJWeK0esMKOhIVL9wDfwOduh7pK3UCIwxreRBZjeyv0uYZpnCxR7dms05Ih4K)网络看到一个帖子(链接如上)
转载 2023-09-07 21:38:17
48阅读
iOS线程小结在 iOS 系统中,应用打开后会生成一个进程,这个进程保存程序运行过程中的资源,进程会开启一个主线程执行代码。在 iOS 系统中,所有的 UI 操作都应放在主线程中进行,所以主线程又称作 UI 线程,除了主线程之外的线程,统称为子线程。为了避免主线程阻塞而造成应用卡顿,所有的耗时操作都应放在子线程中进行。PthreadsPOSIX 线程(POSIX threads),简称Pthr
锁是多线程中中最常用的同步工具。 在多线程编程中,不可避免的会遇到同一个资源在多个线程之间共同使用,这时候就需要通过加锁来保证线程的安全。 1、@synchronized 互斥锁(性能较差;适用线程不多,任务量不大的多线程加锁) (1)加锁的代码尽量少 (2)添加的OC对象必须在多个线程中都是同一对象
一、GCDGCD(Grand Central Dispatch)是Apple开发的一种多核编程技术。主要用于优化应用程序以支持多核处理器GCD提供函数实现多线程开发,性能更高,功能更强大首次发布在Mac OS X 10.6,iOS 4以上也可用//定义一个回调函数 void function(void* str) { printf("回调函数 %s\n",str); NSLog
转载 2023-07-24 23:57:48
10阅读
OSSpinLockOSSpinLock叫做“自旋锁”, 等待锁的线程会处于忙等状态,一直占用着CPU资源。缺点:目前已经不再安全,可能会出现优先级反转问题。如果等待锁的线程优先级较高,它会一直占用CPU资源,优先级低的线程就无法释放锁。 例如,有两个贤臣: thread1 (优先级比较高) thread2 (优先级比较低) thread2 先用OSSpinLock加锁,此时thread1 进来,
转载 2023-07-20 22:22:36
56阅读
有这么一个需要,分别执行2个耗时的异步操作,等2个异步操作都执行完毕后在回到主线程执行操作。如果想要快速高效地实现这个需求,可以考虑使用调度组。 调度组的创建代码如下: 1. dispatch_group_t group = dispatch_group_create(); 往调度组里面添加任务的函数如下: 1. dispatch_group_async(dispatch_gro
转载 2023-07-25 09:37:29
96阅读
以下这三种多线程编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的,在项目中很多框架技术分别使用了不同多线程技术。NSThreadNSThread 比其他两个轻量级,使用简单。需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销。部分属性及方法:@property (nullable, copy) NSStri
转载 2023-07-20 21:53:36
77阅读
iOS线程锁一:十种线程锁 我们在使用多线程的时候多个线程可能会访问同一块资源,这样就很容易引发数据错乱和数据安全等问题,这时候就需要我们保证每次只有一个线程访问这一块资源,锁 应运而生。 这里顺便提一下,上锁的两种方式trylock和lock使用场景: 当前线程锁失败,也可以继续其它任务,用 trylock 合适 当前线程只有锁成功后,才会做一些有意义的工作,那就 lock,没必要轮询 tryl
转载 2023-08-15 17:58:40
74阅读
锁OSSpinLock1. OSSpinLock叫做 "自旋锁",等待锁的线程会处于忙等(busy-wait)状态,一直占用着CPU资源 2. 目前已经不再安全,可能会出现优先级反转问题 3. 如果等待锁的线程优先级较高,它会一直占用着CPU资源,优先级低的线程就无法释放锁 4. 需要导入头文件#import <libkern/OSAtomic.h> 复制代码//初始化锁 OSSpin
转载 2024-01-13 23:11:04
57阅读
简介NSthread是苹果官方提供面向对象操作线程的技术,简单方便,可以直接操作线程对象,不过需要自己控制线程的生命周期。在平时使用较少,常用的就是下面的方法来获取当前线程。 [NSThread currentThread] 使用1.实例初始化、属性和实例方法初始化 切记下面两个方法初始化的NSThread必须手动start开启线程 //创建线程 NSThread *newThread = [
#1、iOS中的多线程: 首先明白进程的概念:正在进行中的程序被称为进程,负责程序运行的内存分配,每个进程都有自己独立的虚拟内存空间。 线程是进程中一个独立的执行路径(控制单元),一个进程至少包含一条线程,即主线程;可以将耗时的执行路径(如网络请求)放在其他线程中执行;线程不能被杀掉,但可以暂停/休眠一条线程。##1.1、创建线程的目的:开启一条新的执行路径,运行指定的代码,与主线程中的代码实现同
转载 2023-09-07 05:55:51
46阅读
NSThread平时常用来获取当前线程和主线程// 获得主线程 + (NSThread *)mainThread; + (NSThread *)currentThread;启动线程方法- (void)start; // 线程进入就绪状态 -> 运行状态。当线程任务执行完毕,自动进入死亡状态阻塞(暂停)线程方法+ (void)sleepUntilDate:(NSDate *)date;
转载 2023-11-30 09:45:53
65阅读
一、NSThread1.线程阻塞- (IBAction)btnClick { NSThread *current = [NSThread currentThread]; for (int i = 0; i<20000; i++) { NSLog(@"run---%@", current); } return NULL; }这
转载 2023-07-25 21:42:28
93阅读
iOS中有几种方法来解决多线程访问同一个内存地址的互斥同步问题: 方法一,@synchronized(id anObject),(最简单的方法) 会自动对参数对象加锁,保证临界区内的代码线程安全 1. @synchronized(self) 2. 3. { 4. 5. // 这段代码对其他 @synchronized(self) 都是互斥的
iOS中开启线程有三种方式NSThread,GCD,NSOperation其实还有一种,pthread ,只是这种太古老了,用起来难度大,所以被忽略了1.NSThread开线程方式://打开一个线程 -(void)newThread{ //方式1: //withObject 参数,即run 方法的参数 //[self performSelectorInBackgroun
转载 2024-03-14 07:36:31
51阅读
1、什么叫做线程间通信  在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信2、线程间通信的体现  1个线程传递数据给另1个线程  在1个线程中执行完特定任务后,转到另1个线程继续执行任务3、线程间通信示例  UIImageView下载图片这个例子, 主线程中开启一个子线程去下载图片, 当图片下载完成之后再回到主线程中更新显示图片, 这样的一个过程就是线程间通信的一个过程.&nbs
 一、atomic介绍github对应Demo:https://github.com/Master-fd/LockDemo      在iOS中,@property 新增属性时,可以增加atomic选项,atomic会给对应对setter方法加锁,相当于- (void)setTestStr:(NSString *)testStr {
转载 2023-07-17 23:51:06
71阅读
  • 1
  • 2
  • 3
  • 4
  • 5