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) ;
}) ;
}) ;
}
更多关于