HarmonyOS 用户在主线程调用接口,接口在子线程执行任务,任务执行完后怎么在主线程返回结果。子线程是用pthread_create创建的

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

在子线程中执行完任务后,可以使用主线程的消息队列来将结果传递回主线程。参考示例:

#include <pthread.h>
#include <queue>
#include <mutex>
#include <condition_variable>

using namespace std;

queue<int> resultQueue;
mutex resultMutex;
condition_variable resultCondition;

void *threadFunc(void *arg) {
    int result = 0;
    // 执行任务
    for (int i = 1; i <= 100; i++) {
        result += i;
    }
    // 将结果传递回主线程
    unique_lock<mutex> lock(resultMutex);
    resultQueue.push(result);
    resultCondition.notify_one();
    return NULL;
}
pthread_t tid1;
pthread_create(&tid1, NULL, threadFunc, NULL);

// 等待子线程传递结果
unique_lock<mutex> lock(resultMutex);
while (resultQueue.empty()) {
    resultCondition.wait(lock);
}
int result = resultQueue.front();
resultQueue.pop();
lock.unlock();

OH_LOG_INFO(LOG_APP, "Result: %{public}d", result);
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS线程池周期执行任务
1322浏览 • 1回复 待解决
TaskPool线程主线程如何通信
2527浏览 • 1回复 待解决
zip包解压主线程还是IO线程
1807浏览 • 1回复 待解决
Worker宿主线程必须主线程吗?
684浏览 • 1回复 待解决