小编Tim*_*olz的帖子

如何将代码块分派到iOS中的同一个线程?

问题的主要方面:它是关于iOS的.我可以以某种方式调度代码块,他们将(a)在后台运行和(b)在同一个线程上运行吗?我想在后台运行一些耗时的操作,但这些操作必须在同一个线程上运行,因为它们涉及资源,不能在线程之间共享.

进一步的技术细节,如果需要:它是关于实现Apache Cordova的sqlite插件,Apache Cordova是移动平台上HTML5应用程序的框架.这个插件应该是Cordova的插件API 的WebSQL实现.(这意味着,不可能将整个事务包装在单个块中,这可以使一切变得更容易.)

以下是Cordova文档中的一些代码:

- (void)myPluginMethod:(CDVInvokedUrlCommand*)command
{
    // Check command.arguments here.
    [self.commandDelegate runInBackground:^{
        NSString* payload = nil;
        // Some blocking logic...
        CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:payload];
        // The sendPluginResult method is thread-safe.
        [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
    }];
}
Run Code Online (Sandbox Code Playgroud)

但据我所知,无法保证那些调度的代码块(请参阅runInBackground)将在同一个线程上运行.

sqlite asynchronous thread-safety grand-central-dispatch ios

17
推荐指数
1
解决办法
5223
查看次数