ios- 死锁

来源:互联网 发布:国学大师txt数据库 编辑:程序博客网 时间:2024/05/21 11:34

什么是死锁 ?

什么时候会发生死锁?

出现死锁我们怎么解决

死锁就是线程之间的相互等待

简单的来说 就是你等我 我等你  线程出现这种情况会导致死锁的放生

举个简单的例子 :

#import "GCDViewController.h"@interface GCDViewController (){    /**     *  串行队列     */    dispatch_queue_t mainQueue;        /**     *  并行队列     *     *  @return <#return value description#>     */    dispatch_queue_t globelQueue;}@end@implementation GCDViewController- (void)viewDidLoad {    [super viewDidLoad];    /**     *  同步调度:dispatch_sync(<#dispatch_queue_t queue#>, <#^(void)block#>)     把一个任务添加到某个queue 等这个任务执行完 调用线程才会执行        异步调度:dispatch_async(<#dispatch_queue_t queue#>, <#^(void)block#>)        把一个任务添加到某个队列立马离开  不管这个任务在这个队列的执行状态     *     *     */    NSLog(@"3333333333333333333");    dispatch_sync(dispatch_get_main_queue(), ^{        NSLog(@"111111111111111111");    });    NSLog(@"2222222222222222222");        // Do any additional setup after loading the view.}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {    // Get the new view controller using [segue destinationViewController].    // Pass the selected object to the new view controller.}*/@end

打印结果只有3333.。。

为什么?

dispatch_sync 这句话的作用是阻塞主线程的 我们有在主线程中派遣任务  主线程没办法执行 会发生相互等待  出现死锁

0 0
原创粉丝点击