多线程的常用方法及GCD

一 :多线程的常用方法

//判断当前线程是否是多线程

//+ (BOOL)isMultiThreaded;

//获取当前线程对象

//+ (BOOL)currentThread;

//使当前线程睡眠指定的时间,单位为秒

//+ (void)sleepForTimeInterval:(NSTimeInterval)ti;

//退出当前线程

//+ (void)exit;

//判断当前线程是否为主线程

//+ (void)isMainThread

//启动该线程

//- (void)start

 

二: GCD

//1,任务和队列

//

//GCD中有2个核心概念

//

//(1)任务:执行什么操作

//

//(2)队列:用来存放任务

//

//

//

//GCD的使用就2个步骤

//

//(1)定制任务

//

//(2)确定想做的事情

//

//

//

//将任务添加到队列中,GCD会自动将队列中的任务取出,放到对应的线程中执行

//

//提示:任务的取出遵循队列的FIFO原则:先进先出,后进后出

//

//2、执行任务

//

//1.GCD中有2个用来执行任务的函数

//

//说明:把右边的参数(任务)提交给左边的参数(队列)进行执行。

//

//(1)用同步的方式执行任务 dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);

//

//参数说明:

//

//queue:队列

//

//block:任务

//

//

//

//(2)用异步的方式执行任务 dispatch_async(dispatch_queue_t queue, dispatch_block_t block);

//

//2.同步和异步的区别

//

//同步:在当前线程中执行

//

//异步:在另一条线程中执行

 

- (void)viewDidLoad {

    [super viewDidLoad];

    //GCD

    //创建一个队列

    dispatch_queue_t queue = dispatch_queue_create("test", NULL);

    dispatch_async(queue, ^{

        for (int i; i<100; i++) {

            NSLog(@"---多线程1--%d",i);

        }

        

        BOOL isMain = [NSThread isMainThread];

        

        dispatch_sync(dispatch_get_main_queue(), ^{

            BOOL isMain = [NSThread isMainThread];

            if (isMain) {

                NSLog(@"主线程");

            }

        });

    });

    //通过此种方式,还是同步运行在当前线程上

    dispatch_sync(queue, ^{

         //当前线程

    });

    

}

欢迎指正错误,相互学习,欢迎加入IT技术学习交流群:554587323

 

 

 

 

你可能感兴趣的:(iOS开发)