我的任务是从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中的内容。显示打印消息。仅异步块中的代码未执行。