美文网首页
多线程代码示例

多线程代码示例

作者: JimmyL | 来源:发表于2018-06-01 14:56 被阅读7次

    1、

    dispatch_queue_t queue = dispatch_queue_create("shddj", DISPATCH_QUEUE_SERIAL);
    dispatch_async(queue, ^{
        NSLog(@"1");
        dispatch_sync(queue, ^{
            NSLog(@"2");
        });
        NSLog(@"3");
    });
    

    生成一个串行队列,队列中的block按照先进先出(FIFO)的顺序去执行,实际上为单线程执行。第一个block异步添加到穿行队列,先打印 “1”,然后同步向串行队列添加第二个block,造成线程阻塞,即死锁,程序崩溃;

    2、

    dispatch_queue_t queue = dispatch_queue_create("concurrent_queue", DISPATCH_QUEUE_CONCURRENT);
    dispatch_async(queue, ^{
        NSLog(@"1");
        dispatch_sync(queue, ^{
            NSLog(@"2");
        });
        NSLog(@"3");
    });
    NSLog(@"4");
    while (1) { }
    NSLog(@"5");
    

    生成一个并发队列,并异步添加最外层block到并发队列,主线程在添加完继续执行 NSLog(@"4"),因为 NSLog(@"2") 是同步任务,要在执行完 NSLog(@"2") 采取执行 NSLog(@"3");

    相关文章

      网友评论

          本文标题:多线程代码示例

          本文链接:https://www.haomeiwen.com/subject/mgytcftx.html