Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用反复调用的单个backgroundthread方法_Ios_Iphone_Multithreading - Fatal编程技术网

Ios 如何使用反复调用的单个backgroundthread方法

Ios 如何使用反复调用的单个backgroundthread方法,ios,iphone,multithreading,Ios,Iphone,Multithreading,我有一个模型类,用于获取数据库信息,为此,我在数据库类中有getInfo()方法。在我的主类中,我有table view来显示table view中的数据,我想调用这个数据库类方法gain,如果数据库中没有数据,我将从相同的数据库方法向服务器发出请求。为了防止视图阻塞,我正在调用performselectorInBackgroundThread()。事情进展顺利,但我的问题是,对于每个请求,我都不是一个不同的背景线程。好吗?。我想创建一个backgoundthread方法,我可以反复使用它。请给

我有一个模型类,用于获取数据库信息,为此,我在数据库类中有
getInfo()
方法。在我的主类中,我有table view来显示table view中的数据,我想调用这个数据库类方法gain,如果数据库中没有数据,我将从相同的数据库方法向服务器发出请求。为了防止视图阻塞,我正在调用
performselectorInBackgroundThread()
。事情进展顺利,但我的问题是,对于每个请求,我都不是一个不同的背景线程。好吗?。我想创建一个backgoundthread方法,我可以反复使用它。请给我一些代码。谢谢

当然可以使用GCD

创建串行调度队列

dispatch_queue_t _queue ;
_queue = dispatch_queue_create("Queue.database", DISPATCH_QUEUE_SERIAL);
当您想做数据库工作时,可以这样做,这是一个查询示例

- (void)asyncQueryUserId:(NSString *)userId completeBlock:(void (^)(NSArray *))block
{
    dispatch_sync(_queue, ^{
        // data base work
        NSArray * users = queryDB(userId) ;
        // after do the work and get the result
        // you may want the result to continue your logic
        dispatch_async(dispatch_get_main_queue(), ^{
            block(users) ;
        }) ;
    }) ;
}
更多关于