如何判断是否为主线程?

获取当前线程是否为主线程,类似于[NSThread isMainThread]。

HarmonyOS
2024-05-23 22:49:25
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
chjie1

主线程的线程号与进程号相同,在需要的地方判断当前的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; 
    } 
}

线程上限:

  • TaskPool:TaskPool自行管理生命周期,无需关心任务负载高低,TaskPool最多为cpu online个数 - 1,8核通常为7个,根据负载扩缩容,外部无法控制和超出,如果同时启用超过,则会等待。
  • Worker:开发者自行管理Worker的数量及生命周期,最多开启8个Worker,超出会报异常。
  • C++创建线程无数量限制。
分享
微博
QQ
微信
回复
2024-05-24 22:24:24
相关问题
如何判断当前线程是否主线程
962浏览 • 1回复 待解决
TaskPool子线程主线程如何通信
911浏览 • 1回复 待解决
zip包的解压是在主线程还是IO线程
610浏览 • 1回复 待解决
如何判断HAP是否安装
772浏览 • 1回复 待解决
如何判断Web组件是否全屏
803浏览 • 1回复 待解决
如何判断软键盘是否弹出
799浏览 • 1回复 待解决
如何判断har是否被混淆了?
371浏览 • 1回复 待解决
鸿蒙应用如何判断是否使用debug签名?
1989浏览 • 1回复 待解决
Web组件如何判断网址是否加载成功
918浏览 • 1回复 待解决
Web中如何判断是否发生重定向
433浏览 • 1回复 待解决
如何判断JS对象中是否存在某个值
787浏览 • 1回复 待解决