南联网站建设公司,注册企业查询,视频广告宣传片制作,网站建设hph下载同步:多个任务依次按顺序执行 异步:多个任务可以时执行 进程:一个正在运行的应用程序就是一个进程,为应用开辟内存空间 线程:一个进程可以有多个线程,是进程的基本执行单元,执行应用的代码/任务 NSThread: 创建线程 方法一:对象方法 NSThread *thread [[NSThread alloc]initWi…同步:多个任务依次按顺序执行 异步:多个任务可以时执行 进程:一个正在运行的应用程序就是一个进程,为应用开辟内存空间 线程:一个进程可以有多个线程,是进程的基本执行单元,执行应用的代码/任务 NSThread: 创建线程 方法一:对象方法 NSThread *thread [[NSThread alloc]initWithTarget:self selector:selector(demo:) object:mm]; [thread start]; 方法二:类方法 [NSThread detachNewThreadSelector:selector(demo:) toTarget:self withObject:mm]; 方法三 [self performSelectorInBackground:selector(demo:) withObject:mm]; -(void)demo:(NSString *)str{ NSLog(%--%,[NSThread currentThread],str); } pthread: 创建线程: NSLog(--%--,[NSThread currentThread]); NSString *str mm; pthread_t ID; int result pthread_create(ID, NULL, demo, (__bridge void *)(str)); if (result 0) { NSLog(成功 ); }else{ NSLog(失败); } 要调用函数 void* demo (void *perme){ NSString *str (__bridge NSString *)(perme); NSLog(% %,[NSThread currentThread],str); return NULL; } 线程状态(五个):新建-就绪-运行-阻塞-死亡 例子 新建:NSThread *thread [[NSThread alloc]initWithTarget:self selector:selector(demo:) object:mm]; 就绪: [thread start] 运行状态:(计算机决定,程序员不可控) 阻塞: [NSThread sleepForTimeInterval:3]; 死亡: [NSThread exit] NSThread线程属性: thread.name:线程名称 thread.stackSize 线程在内存所占内存大小 thread.threadPriority 优先级(只是增大该线程的调用频率,不能保证限执行完毕) 取值范围(0,1),默认为0.5; //多线程共享资源问题 NSThread *thread1 [[NSThread alloc]initWithTarget:self selector:selector(demo) object:mm]; [thread1 start]; NSThread *thread2 [[NSThread alloc]initWithTarget:self selector:selector(demo) object:mm]; [thread2 start]; int count; -(void)demo{ while (YES) { if (count 0) { count - count; NSLog(%d,count); }else{ NSLog(结束); break; } } } 会出现资源混乱:解决方法(互斥锁:使用的技术就是线程同步技术)能够有效防止多线程抢夺资源造成的数据安全问题 线程同步:多线程按顺序的执行任务; 互斥锁:synchronized(1.必须继承与NSObject 2.必须是全局变量一般设为self) { 要执行代码; } 注意:加锁后线程的执行效率会比不加锁低,但保证了同时操作全局变量的安全性转载于:https://www.cnblogs.com/niumingming920322/p/5680363.html