4-22 学习心得

ARC 只能作用于 Objective-C 对象

1.sleep(unsigned int);

该函数给当前线程挂起给定时间(unsigned int)秒后继续执行下一句。(使程序睡眠)

例如:

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        int i = 10;

        NSLog(@"开始阻塞了");

        dispatch_queue_t queue = dispatch_queue_create("lmp", nil);

        dispatch_sync(queue, ^{

            NSLog(@"&&&&&&&");

            sleep(i / 5);

            NSLog(@"----%d----",i);

            

        });

                // ARC模式不需要这句,没开的就要写上

//        dispatch_release(queue);

        NSLog(@"阻塞了两秒");

    }

    return 0;

}

 

打印结果:

2015-04-22 14:03:14.229 学习-多线程[1255:47112] 开始阻塞了

2015-04-22 14:03:14.230 学习-多线程[1255:47112] &&&&&&&

2015-04-22 14:03:16.231 学习-多线程[1255:47112] ----10----

 

2015-04-22 14:03:16.231 学习-多线程[1255:47112] 阻塞了两秒

 

2. dispatch_semaphore 信号量基于计数器的一种多线程同步机制

// 创建

dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);

dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);

 

semaphore计数大于等于1:程序继续运行

计数-1:返回

计数为0:等待       

DISPATCH_TIME_FOREVER:一直等待

原文地址:https://www.cnblogs.com/pocket-mood/p/4448244.html