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

HarmonyOS
2025-01-09 14:55:59
浏览
收藏 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);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
分享
微博
QQ
微信
回复
2025-01-09 16:55:52
相关问题
HarmonyOS线程池周期执行任务
2505浏览 • 1回复 待解决
TaskPool线程主线程如何通信
3668浏览 • 1回复 待解决
zip包解压主线程还是IO线程
2586浏览 • 1回复 待解决
Worker宿主线程必须主线程吗?
1438浏览 • 1回复 待解决