我的应用程序必须在云数据库和核心数据之间进行大量同步,并且这种同步发生在各种方法中。我使用简单的后台线程执行此操作:
dispatch_queue_t backgroundThread = dispatch_queue_create("background thread", NULL);
dispatch_async(backgroundThread, ^{ ...
但是,如果我在应用程序中做得太快,可能会同时发生不同的同步任务,这可能会导致意外的结果。
因此,我只想在一个线程上串行执行所有同步任务。每当需要执行同步任务时,我都希望将其分派到专用线程,直到该线程完成所有先前提交的任务后才执行。我该如何处理?具体来说...
我无法找到直接解决这种情况的答案。这个(使用单个共享的后台线程进行iOS数据处理?)接近了,但是回避了。
谢谢你的时间。
通过这样的静态函数访问队列:
static dispatch_queue_t my_serial_queue() {
static dispatch_queue_t s_serial_queue;
static dispatch_once_t s_done;
dispatch_once(&s_done, ^{s_serial_queue = dispatch_queue_create("com.app.my_queue_name", DISPATCH_QUEUE_SERIAL);});
return s_serial_queue;
}
然后像这样使用它...
dispatch_sync(my_serial_queue(), ^{
//do something here
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句