从后台快速调用C函数

时间:2019-02-25 16:01:31

标签: ios swift asynchronous

我的任务是从main.swift调用用C编写的函数。但是此调用需要在后台(异步)执行,因为这需要几分钟。
trialFunc()大约需要30-45分钟才能完成操作。在主线程上运行它给我0x8badf00d错误。当我尝试在后台运行它时,看起来控制权已结束执行。
我的main.swift显示如下:

import Foundation

//let dispatchQueue = DispatchQueue(label: "Background thread", qos:.background);
//dispatchQueue.async {
//    trialFunc();             <-- This does not run
//    print("Inside async");   
//};

trialFunc();   <-- This works but runs on main thread


我的桥接标题的内容:

#include "callIntoC.h"

callIntoC.h的内容如下所示:

#ifndef callIntoC_h
#define callIntoC_h

void trialFunc(void);
#endif /* callIntoC_h */

callIntoC.c的内容

#include "callIntoC.h"
#include "app/call_main.h"

void trialFunc()
{
    my_main();   <-- This calls into the C code which does all my network I/O op
    return;
}

从main.swift调用时,如何使我的trialFunc()在后台线程中运行?我是iOS开发人员的新手,不胜感激。 TIA ...

更新:我尝试在所有与异步相关的代码之后打印main.swift中的内容。显示打印消息。仅异步块中的代码未执行。

0 个答案:

没有答案