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:一直等待