美文网首页
多线程信号量dispatch_semaphore

多线程信号量dispatch_semaphore

作者: Django_Monstar | 来源:发表于2016-10-29 10:41 被阅读9次

dispatch_semaphore是线程调度的一种方式主要方法


dispatch_semaphore_t sem = dispatch_semaphore_create(0);
//创建信号量 

dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, DISPATCH_TIME_FOREVER)
//线程等待 如果sem 初始为0 则需要等待  dispatch_semaphore_create(1)则不需要

 dispatch_semaphore_signal(sem);
//信号量自增 相当于+1 不过进行自增信号会增加 将sem打印会发现 sem还是1 

long signalValue = dispatch_semaphore_signal(sem);
           
NSLog(@"%ld",signalValue);
//sem 信号量可以增加或减少n个  但long值为0到1
//根据其阻塞进程的特性可以进行生产消费模式等

多线程和数据库


 dispatch_queue_t queue = dispatch_get_global_queue ( DISPATCH_QUEUE_PRIORITY_HIGH , 0 ) ;
    dispatch_semaphore_t semaphore = dispatch_semaphore_create (0) ;
    __block FMDBUserModel * model = [[FMDBUserModel alloc] init];
    dispatch_async(queue, ^{
        [[FMDatabase sharedInstance]inDatabase:^(FMDatabase *db) {
            FMResultSet *rs = [db executeQuery:[NSString stringWithFormat:@"SELECT * FROM User WHERE userName = ?"] withArgumentsInArray:@[[SSKeychain login]]];
            if (rs == nil) {
                FMDBLogLastError(db);
                return;
            }
            if ([rs next]) {
                FMDBUserModel * userModel = [FMDBUserModel yy_modelWithDictionary:rs.resultDictionary.mutableCopy];
                model = userModel;
                dispatch_semaphore_signal (semaphore) ;
            }
            else{
                return;
            }
            
            @onExit {
                [rs close];
            };
        }];
        
    });
    dispatch_semaphore_wait (semaphore,DISPATCH_TIME_FOREVER) ;
   进行更新操作

相关文章

  • GCD(四) dispatch_semaphore

    本文是GCD多线程编程中dispatch_semaphore内容的小结,通过本文,你可以了解到: 信号量的基本概念...

  • iOS 常用锁

    信号量dispatch_semaphore 【塞莫佛】 在多线程环境下用来确保代码不会被并发调用。在进入一段代码前...

  • 常用锁

    信号量dispatch_semaphore 在多线程环境下用来确保代码不会被并发调用。在进入一段代码前,必须获得一...

  • iOS多线程——dispatch_semaphore

    dispatch_semaphore是GCD中的信号量,可以处理多线程中线程并发的问题,也可以用作同步处理 一、d...

  • GCD 学习(八)dispatch_semaphore

    GCD 学习(八)dispatch_semaphore dispatch_semaphore 信号量基于计数器的一...

  • 多线程之GCD线程安全

    GCD 信号量:dispatch_semaphore GCD 中的信号量是指Dispatch Semaphore,...

  • 关于 semaphore 信号量

    dispatch_semaphore 信号量基于计数器的一种多线程同步机制。在多个线程访问共有资源时候,会因为多线...

  • dispatch_semaphore_wait

    dispatch_semaphore 信号量基于计数器的一种多线程同步机制。在多个线程访问共有资源时候,会因为多线...

  • dispatch_semaphore

    dispatch_semaphore是GCD用来同步的一种方式,dispatch_semaphore 信号量基于计...

  • 信号量(dispatch_semaphore)

    在我们平常开发中的一些基本概念与基本使用,dispatch_semaphore俗称信号量,也称为信号锁,在多线程编...

网友评论

      本文标题:多线程信号量dispatch_semaphore

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