文章分类 -  多线程

摘要:1 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 2 { 3 //1.创建队列 4 NSOperationQueue *queue= [[NSOperationQueue alloc]init]; 阅读全文

posted @ 2016-07-17 17:45 柠檬片 阅读(133) 评论(0) 推荐(0)

摘要:1.操作依赖 NSOperation之间可以设置依赖来保证执行顺序 比如一定要让操作A执行完后,才能执行操作B,可以这么写 [operationB addDependency:operationA]; // 操作B依赖于操作A 可以在不同queue的NSOperation之间创建依赖关系 注意:不能 阅读全文

posted @ 2016-07-17 17:18 柠檬片 阅读(293) 评论(0) 推荐(0)

摘要:1.设置最大并发数 什么是并发数 同时执行的任务数 比如,同时开3个线程执行3个任务,并发数就是3 最大并发数的相关方法 - (NSInteger)maxConcurrentOperationCount; - (void)setMaxConcurrentOperationCount:(NSInteg 阅读全文

posted @ 2016-07-17 17:14 柠檬片 阅读(132) 评论(0) 推荐(0)

摘要:NSOperationQueue的作用 NSOperationQueue的作用 NSOperation可以调用start方法来执行任务,但默认是同步执行的 如果将NSOperation添加到NSOperationQueue(操作队列)中,系统会自动异步执行NSOperation中的操作 添加操作到N 阅读全文

posted @ 2016-07-17 16:26 柠檬片 阅读(375) 评论(0) 推荐(0)

摘要:1.<!--StartFragment-->NSInvocationOperation<!--EndFragment--> 创建NSInvocationOperation对象 - (id)initWithTarget:(id)target selector:(SEL)sel object:(id)a 阅读全文

posted @ 2016-07-17 16:22 柠檬片 阅读(428) 评论(0) 推荐(0)

摘要:NSOperation的作用 NSOperation的作用 配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOperationQueue实现多线程的具体步骤 先将需要执行的操作封装到一个NSOperation对象中 然后将NSOpera 阅读全文

posted @ 2016-07-17 16:16 柠檬片 阅读(135) 评论(0) 推荐(0)

摘要:1.栅栏函数 作用:控制线程的执行顺序 注:栅栏函数不能使用全局并发队列 1 -(void)barrier 2 { 3 //1.创建队列(并发队列) 4 dispatch_queue_t queue = dispatch_queue_create("com.downloadqueue", DISPA 阅读全文

posted @ 2016-07-16 23:00 柠檬片 阅读(138) 评论(0) 推荐(0)

摘要:从子线程回到主线程 从子线程回到主线程 dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 执行耗时的异步操作... dispatch_async(dispatch_get_main 阅读全文

posted @ 2016-07-16 21:34 柠檬片 阅读(158) 评论(0) 推荐(0)

摘要:队列 第一个参数:C语言字符串,标签 第二个参数: DISPATCH_QUEUE_CONCURRENT:并发队列 DISPATCH_QUEUE_SERIAL:串行队列 dispatch_queue_t queue = dispatch_queue_create("com.520it.download 阅读全文

posted @ 2016-07-16 21:00 柠檬片 阅读(314) 评论(0) 推荐(0)

摘要:什么是GCD 什么是GCD 全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 纯C语言,提供了非常多强大的函数 GCD的优势 GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 GCD会自动利用更多的CPU内核(比如双核、四核) GCD会自动管理线程的生命周期 阅读全文

posted @ 2016-07-16 20:49 柠檬片 阅读(133) 评论(0) 推荐(0)

摘要:OC在定义属性时有nonatomic和atomic两种选择 OC在定义属性时有nonatomic和atomic两种选择 patomic:原子属性,为setter方法加锁(默认就是atomic) pnonatomic:非原子属性,不会为setter方法加锁 nonatomic和atomic对比 ato 阅读全文

posted @ 2016-07-16 18:41 柠檬片 阅读(145) 评论(0) 推荐(0)

摘要:安全隐患: 安全隐患: 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题. 解决方法: 使用互斥锁: 互斥锁使用格式 @synchronized(锁对象) { // 需要锁定的代码 } 注意:锁定1份代码只用1把锁,用多把锁是无效的 互斥锁的优缺点 优点:能有效防止因多线程抢夺资源造成的 阅读全文

posted @ 2016-07-16 18:39 柠檬片 阅读(124) 评论(0) 推荐(0)

摘要:线程间通信常用方法 只要是对象,都可以掉用以下方法 - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait; - (void)performSelector:(SEL 阅读全文

posted @ 2016-07-16 17:36 柠檬片 阅读(125) 评论(0) 推荐(0)

摘要:1 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 2 { 3 //创建线程 4 NSThread *thread = [[NSThread alloc]initWithTarget:self se 阅读全文

posted @ 2016-07-16 17:33 柠檬片 阅读(466) 评论(0) 推荐(0)

摘要:1 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 2 { 3 [self createThread3]; 4 5 } 6 7 /* 8 第三种创建线程的方式 9 特点:默认开启线程 10 */ 1 阅读全文

posted @ 2016-07-16 17:30 柠檬片 阅读(115) 评论(0) 推荐(0)

摘要:1 - (IBAction)btnClick:(id)sender { 2 3 NSLog(@"%@",[NSThread mainThread]); 4 //创建线程 5 pthread_t thread; 6 /* 7 第一个参数:线程对象 8 第二个参数:线程属性 9 第三个参数:void * 阅读全文

posted @ 2016-07-16 17:26 柠檬片 阅读(255) 评论(0) 推荐(0)

摘要:1.基本概念 1.1 进程 进程是指在系统中正在运行的一个应用程序。每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内。 1.2 线程 1.1 进程 进程是指在系统中正在运行的一个应用程序。每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内。 1.2 线程 (1)基本概念 阅读全文

posted @ 2016-07-16 17:24 柠檬片 阅读(121) 评论(0) 推荐(0)