
多线程
文章平均质量分 81
-FIGHTING-
这个作者很懒,什么都没留下…
展开
-
线程之间的通信-(子线程获得主线程的方式)
/** ios 的线程库模型 1.pthread(底层C)线程库 (一般的情况下不用) 2.NSThread(OC线程库) 3.NSOperationQueue(线程池,线程队列) 4.GCD(Block 模式的线程) */#import "ViewController.h"@interface ViewController ()@end@impl原创 2015-08-28 20:08:54 · 2345 阅读 · 0 评论 -
GCD的使用方法
在项目开发中 我们用到最多的就是GCD 特总结常用的几点与大家分享 #import "ViewController.h"@interface ViewController (){ /** * 串行队列 */ dispatch_queue_t _mainQueue; /** * 并行队列 */ dis原创 2015-09-24 16:16:46 · 1733 阅读 · 0 评论 -
ios-信号量
代码虽然不常 但是#import "semaphoreController.h"@interface semaphoreController ()@end@implementation semaphoreController- (void)viewDidLoad { [super viewDidLoad]; dis原创 2015-09-24 14:28:30 · 1165 阅读 · 0 评论 -
ios- 死锁
什么是死锁 ?什么时候会发生死锁?出现死锁我们怎么解决 死锁就是线程之间的相互等待 简单的来说 就是你等我 我等你 线程出现这种情况会导致死锁的放生 举个简单的例子 :#import "GCDViewController.h"@interface GCDViewController (){ /** * 串行队列 */原创 2015-09-24 14:49:02 · 996 阅读 · 0 评论 -
NSOperation封装- 多任务下载
#import /** 完成回调 */#warning mark - block在主线程中创建 回调就必须用主线程typedef void(^OperationDidFinishBlock)(void);/** 进度回调 */typedef void(^OPerationDidRecieveProgressBlock)(float progress);@inte原创 2015-09-24 20:15:36 · 1008 阅读 · 0 评论 -
IOS多线程开发其实很简单
概览大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算。可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行。但是机器码是按顺序执行的,一个复杂的多步操作只能一步步按顺序逐个执行。改变这种状况可以从两个角度出发:对于单核处理器,可以将多个步骤放到不同的线程,这样一来用户完成UI操作后其他后续任务在其他线程中,当CPU空闲时会继续执行,而此时对于转载 2016-01-21 14:42:23 · 927 阅读 · 0 评论 -
网络异步请求
// 请求数据- (void)request:(NSString *)type page:(NSInteger)page { dispatch_async(_urls_queu, ^{ [self showLoading];// [self.tableView.mj_header beginRefreshing]; [Common原创 2016-01-15 10:50:11 · 409 阅读 · 0 评论 -
ios多线程的几种创建方式
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autore原创 2016-03-10 10:56:43 · 421 阅读 · 0 评论 -
runloop
runloop是事件接收和分发机制的一个实现。Runloops是线程的基础架构部分。一个runloop就是一个事件处理循环,用来不停的调配工作以及处理输入事件。使用run loop的目的是使你的线程在有工作的时候工作,没有的时候休眠。Run loop的管理并不完全是自动的。你仍必须设计你的线程代码以在适当的时候启动run loop并正确响应输入事件。Cocoa和CoreFund原创 2016-03-10 12:44:13 · 292 阅读 · 0 评论 -
浅谈iOS开发中方法延迟执行的几种方式
Method1. performSelector方法Method2. NSTimer定时器Method3. NSThread线程的sleepMethod4. GCD公用延迟执行方法- (void)delayMethod{ NSLog(@"delayMethodEnd");}Method1:performSelector[self原创 2016-03-10 12:47:12 · 788 阅读 · 0 评论 -
系统提供的dispath方法
为了方便地使用 GCD,苹果提供了一些方法方便我们将 block 放在主线程 或 后台线程执行,或者延后执行。使用的例子如下:// 后台执行:dispatch_async(dispatch_get_global_queue(0, 0), ^{ // something});// 主线程执行:dispatch_async(dispatch_get_main_queue(),原创 2016-05-10 11:02:56 · 1026 阅读 · 0 评论 -
ios-锁机制-条件锁的使用
条件锁很简单 这里给大家简单的简介几个例子 条件锁类似于Operation中的依赖关系信号量类似于OperationQueue中的设置的最大并发量#import "LockViewController.h"@interface LockViewController ()@end@implementation LockViewController- (void)viewDidLoad原创 2015-09-24 13:50:54 · 1331 阅读 · 0 评论 -
线程之间的通信
线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现1个线程传递数据给另1个线程在1个线程中执行完特定任务后,转到另1个线程继续执行任务#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)view原创 2015-09-13 09:44:48 · 342 阅读 · 0 评论 -
数据下载 - delegate 形式的异步请求
下载数据可以使用同步请求,异步请求 之前有讲到NSString 、 NSData 类型的同步请求有NSURLConnection 形式的同步请求异步请求有block 形式的异步请求,我们需要创建一个队列 在block 内部实现但是我们最常用的是 delegate 形式的异步请求 #import "ViewController.h"@interface ViewCon原创 2015-08-31 08:48:15 · 615 阅读 · 1 评论 -
数据下载-block 形式的异步请求
这里给大家写了一个方法 ,我们使用block 进行数据异步下载 //block 形式的异步请求-(void)asyncDownloadWithBlock{ //菊花 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; //将字符串转化成URL 地址 NSURL *ur原创 2015-08-31 08:56:03 · 715 阅读 · 2 评论 -
数据库-多线程安全
我们需要使用fdbm 这个三方库如果实现线程安全 我们会选择枷锁的方式但是fdbm 这个库提供了一种多线程安全的方式,但并不是枷锁 这里使用到一个类FMDatabaseQueue使用方法很简单#import "ViewController.h"#import "FMDatabaseQueue.h"@interface ViewController ()@end原创 2015-09-26 12:33:57 · 965 阅读 · 0 评论 -
NSThread 和锁机制
NSThread(OC线程库)主线程:一个iOS程序运行后,默认会开启1条线程,称为“主线程”或“UI线程”主线程的主要作用显示\刷新UI界面处理UI事件(比如点击事件、滚动事件、拖拽事件等)主线程的使用注意:别将比较耗时的操作放到主线程中。耗时操作会卡住主线程,严重影响UI的流畅度,给用户一种“卡”的坏体验#import "ViewController.h"/**原创 2015-09-06 08:11:46 · 479 阅读 · 0 评论 -
NSData类方法的同步请求、NSString类方法的同步请求
#import "ViewController.h"@interface ViewController ()@property(nonatomic,weak)IBOutlet UIButton *button;@property(nonatomic,weak)IBOutlet UIImageView *imageView;@end@implementation ViewCo原创 2015-09-11 21:44:16 · 629 阅读 · 0 评论 -
多线程-经典买票问题
/** 线程加锁会造成系统系能消耗 我们要根据实际的需求合理使用锁,但是不能滥用 * 买票 * * @param name */- (void)buyTicket:(NSString *)name{ while (1) {#if 0 //对象锁 @synchronized(self) { /原创 2015-09-27 11:49:22 · 2226 阅读 · 0 评论 -
ios-断点续传
//断点续传#import "ViewController.h"#import "ResumeDowdload.h"@interface ViewController (){ ResumeDowdload *_resume; float _pv;}@property(nonatomic,weak)IBOutlet UIButton *cancelbutton;原创 2015-09-11 21:47:10 · 380 阅读 · 0 评论 -
GCD-ios 多线程
#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // [self createMyQueue]; //全局队列 // [self g原创 2015-09-13 09:31:39 · 410 阅读 · 0 评论 -
GCD创建单例的方法
#import "Demo.h"static Demo *instance = nil;@implementation Demo//GCD方法创建单例+(id)getDemo{ if (instance == nil) { static dispatch_once_t onceToken; dispatch_once(&on原创 2015-09-13 09:35:31 · 473 阅读 · 0 评论 -
NSOperationQueue 线程池的使用
#import "ViewController.h"@interface ViewController ()@property(nonatomic,retain)NSOperationQueue *queue;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; //原创 2015-09-13 09:41:38 · 462 阅读 · 0 评论 -
程序放后台运行
#import "AppDelegate.h"@interface AppDelegate ()@end@implementation AppDelegate/** * 使用block的另一个用处是可以让程序在后台较长久的运行。 以前,当app被home键退出后,app仅有最多5秒钟的时候做一些保存或清理 资源工作。但是应用可以调用UIApplication的原创 2016-05-10 20:22:54 · 1361 阅读 · 0 评论