多线程NSThread

//

//  ViewController.m

//  多线程

//

//  Created by 谢泽锋 on 16/4/24.

//  Copyright © 2016年 xiezefeng. All rights reserved.

//

#import "ViewController.h"

#import <pthread.h>

#import "ZFthread.h"

@interface ViewController ()

@end

@implementation ViewController

void * run(void *param){

for (int i=0; i<50000; i++) {

NSLog(@"run%@",[NSThread currentThread]);

}

return NULL;

}

- (IBAction)action:(id)sender {

NSLog(@"是否是主线程===%d",  [NSThread isMainThread]);

//    pthread_t thread;

//    pthread_create(&thread, NULL, run, NULL);

//    ZFthread * thread=[[ZFthread alloc]initWithTarget:self selector:@selector(play:) object:@"jack"];

//    [thread start];//开启线程

//    [email protected]"zefeng";

//    1

NSThread * thread=[[NSThread alloc]initWithTarget:self selector:@selector(play:) object:@"jack"];

//    [thread isMainThread];//是否是主线程

//    [NSThread isMainThread];//是否是主线程

//    NSLog(@"是否是主线程===%d",  [thread isMainThread]);

[thread start];//开启线程

[email protected]"zefeng";

// 2 直接从主线程中剥离出来的子线程 当不能设名字

//    [NSThread detachNewThreadSelector:@selector(play:) toTarget:self withObject:@"fengzi"];

//   3 无法对线程跟详细的设置

//    [self performSelectorInBackground:@selector(play:) withObject:@"xiexiaofeng"];

//    4 done 是否掐住等到任务完成为止

//    [self performSelectorOnMainThread:@selector(play:) withObject:@"" waitUntilDone:NO];

}

-(void)play:(NSString*)str

{

for (int i=0; i<10000; i++) {

//        [NSThread sleepForTimeInterval:3];//让线程阻塞2秒

//        [NSThread sleepUntilDate:[NSDate distantFuture]];//睡眠到某个时期

[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]];

if (i==2) {

//            exit(0);

[NSThread exit];//直接退出线程

}

NSLog(@"str==%@ currentThread==%@",str,[NSThread currentThread]);

}

}

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

时间: 2024-10-13 01:33:14

多线程NSThread的相关文章

多线程——NSThread、GCD、NSOperation

1.前言: 一个应用程序就是一个进程,一个进程至少包含一个线程,程序启动会自动创建一个主线程,负责UI界面的现实和控件事件的监控.多线程可以更充分的利用系统CPU资源,一定程度上提升程序的性能.1个进程可以开启多条线程,每条线程可以并行(同时)执行不同的任务.在一个线程内可以包含多个事物(要干的活),在线程内依据先进先出的特性串行执行…… 2.NSThread - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"main thread is %@

多线程 NSThread

多线程 NSThread 创建和启动线程 一个NSThread对象就代表一条线程 创建.启动线程 NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; [thread start]; // 线程一启动,就会在线程thread中执行self的run方法 主线程相关用法 + (NSThread *)mainThread; // 获得主线程 - (BOOL)isMain

iOS多线程 NSThread/GCD/NSOperationQueue

http://www.cnblogs.com/kenshincui/p/3983982.html iOS开发系列--并行开发其实很容易 2014-09-20 23:34 by KenshinCui, 9738 阅读, 19 评论, 收藏,  编辑 --多线程开发 概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的,一个复杂的多步操作只能一步步按顺序逐个执行.改变这种

IOS UI多线程 NSThread 下载并显示图片到UIImageView

效果图 @property (weak,nonatomic)IBOutletUILabel *downLabelInfo; @property (weak,nonatomic)IBOutletUIImageView *imageView; @end @implementationViewController - (void)viewDidLoad { [super viewDidLoad]; NSString *url  [email protected]"http://d.hiphotos.b

iOS多线程与网络开发之多线程NSThread

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源代码传送:http://dwz.cn/Nret1 A.NSThread的基本使用 1.创建和启动线程 一个NSThread对象就代表一条线程

iOS 多线程NSThread理解与场景示例

NSThread是相对GCD和NSOperationQuene而言,比较轻量级的一种多线程处理方式. 但同时,它的弊端就是需要自己管理线程的生命周期,以及线程同步:而另外两种不需要自己管理. 常见方法介绍: 一.获取当前线程 NSThread *current = [NSThread currentThread]; 二.获取主线程 NSThread *main = [NSThread mainThread]; 三.NSThread的创建 1 // 初始化线程 2 NSThread *thread

iOS:多线程NSThread的详细使用

NSThread具体使用:直接继承NSObject NSThread:. 优点:NSThread 是轻量级的,使用简单 缺点:需要自己管理线程的生命周期.线程同步.线程同步对数据的加锁会有一定的系统开销 1.属性 @property (readonly, retain) NSMutableDictionary *threadDictionary;  //线程字典 @property double threadPriority;                                  

多线程 NSThread GCD

ios多线程实现种类 NSThread NSOperationQueue NSObject GCD *************** 1.NSThread //线程 第一种 NSThread *thread1=[[NSThread alloc] initWithTarget:self selector:@selector(sum) object:nil]; // //    //给线程起名字 [email protected]"thread1"; //    //启动线程 [thread

转载的一篇关于iOS里多线程NSThread/NSOperation/GCD的文章

转载 IOS多线程编程对于初学者来说,总是会觉得很难理解和掌握,现在通过几个实例来更加系统全面的理解IOS多线程编程,希望对大家有所帮助. 1:首先简单介绍什么叫线程可并发执行的,拥有最小系统资源,共享进程资源的基本调度单位.共用堆,自有栈(官方资料说明iOS主线程栈大小为1M,其它线程为512K).并发执行进度不可控,对非原子操作易造成状态不一致,加锁控制又有死锁的风险. 2:IOS中的线程iOS主线程(UI线程),我们的大部分业务逻辑代码运行于主线程中.没有特殊需求,不应引入线程增加程序复杂

[iOS]深入浅出 iOS 之多线程 NSThread

http://www.cocoachina.com/bbs/read.php?tid=43852 OS 支持多个层次的多线程 编程,层次越高的抽象程度越高,使用起来也越方便,也是苹果最推荐使用的方法.   下面简要说明这三种不同范式:  Thread 是这三种范式里面相对轻量级的,但也是使用起来最负责的,你需要自己管理thread的生命周期,线程 之间的同步.线程 共享同一应用程序的部分内存空间,它们拥有对数据相同的访问权限. 你得协调多个线程 对同一数据的访问,一般做法是在访问之前加锁,这会导