HarmonyOS async/await promise是在哪个线程,如何判断主线程还是子线程

1,系统提供的async/await promise是在哪个线程中?是耗时操作会阻塞主线程吗?

2,怎么判断一个方法是在哪个线程中吗?类似java:通过Thread.currentThread()方法获取当前线程对象,然后使用getName()方法获取线程名称,判断名称是否为"main"来判断是否是主线程。

HarmonyOS
2024-08-27 11:13:45
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

1. async、await、promise属于单线程异步,不阻塞主线程。

2. 系统无相关接口,需要自行判断,主线程的线程号与进程号相同,在需要的地方判断当前的tid和pid是否相等即可。

ArkTS:

import process from '@ohos.process'; 
function isMainThread(): boolean { 
  return process.pid == process.tid 
}

Native:

#include <unistd.h> 
#include <thread> 
#include <sys/syscall.h> 
  bool isMainThread() { 
  pid_t pid = getpid(); 
  pid_t tid = syscall(SYS_gettid); 
  if (pid == tid) { 
    return true; 
  } else { 
    return false; 
  } 
}

获取进程信息的接口请参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-process-0000001813575988-V5

分享
微博
QQ
微信
回复
2024-08-27 18:52:37
相关问题
如何判断当前线程是否主线程
2436浏览 • 1回复 待解决
怎样判断当前线程是否主线程
511浏览 • 1回复 待解决
zip包的解压主线程还是IO线程
1662浏览 • 1回复 待解决
TaskPool线程主线程如何通信
2329浏览 • 1回复 待解决
如何判断是否为主线程
1134浏览 • 1回复 待解决
Worker的宿主线程必须主线程吗?
414浏览 • 1回复 待解决
HarmonyOS主线程线程切换问题
612浏览 • 1回复 待解决
PromiseAsync/Await 的比较
497浏览 • 1回复 待解决