c++ - C++ 如何检测它正在运行的当前线程?
问题描述
我正在使用 Flutter for Desktop,并且正在从单独的线程调用引擎上的方法。我收到此错误:
[FATAL:flutter/shell/common/shell.cc(808)] Check failed: task_runners_.GetPlatformTaskRunner()->RunsTasksOnCurrentThread().
这来自这一行:
https://github.com/flutter/engine/blob/master/shell/common/shell.cc#L836
我确认当我从创建引擎的同一线程调用该方法时不会发生错误。
所以错误告诉我我需要从创建引擎的同一线程调用此方法
那么C++如何知道哪个线程正在调用一个方法呢?
我追踪了task_runners_.GetPlatformTaskRunner()->RunsTasksOnCurrentThread()
电话,结果是这样的:
https://github.com/flutter/engine/blob/master/fml/task_runner.cc#L41
但我不明白发生了什么。
所以,把事情放在简单的代码中,假设我们有:
class Object{
public:
void run() {
//how can this run function know it's being called by t thread instead of main's thread?
}
}
int main() {
Object obj;
std::thread t (obj.run);
RunLoop();
}
解决方案
推荐阅读
- node.js - 让管理员应用程序使用某些 api 密钥为另一个应用程序中的用户预订服务
- python - Azure 函数 Blob 触发器失败 - Python
- function - 如何在 Vuejs 中创建可重用的函数?
- wkwebview - WKWebView 冻结应用程序 iOS 14,无法显示带有标识符 _UIDatePickerCompactEditor 的配置上下文菜单
- python - Python子模块类实例生成
- flutter - Flutter Visual Studio 模拟器打开后我的程序失败
- spring - 当您将特定的 Spring bean 返回给休息端点的任何消费者时会发生什么
- c# - Ajax 如何将表单数据与 ID 一起发送到控制器
- ssis - 如何将 SQL Server 数据中的值分配给 SSIS 中的变量
- mongodb - How to get all keys of collection that contains certain(String) value in mongodb