C++ C++;从其线程函数引用boost::thread
我正在使用boost线程,我需要从它的线程函数中引用一个线程,这样我就可以用它对应的线程id将它存储在一个映射中。主要思想是我将使用另一个线程通过查询proc表来收集线程统计信息,所以我不能使用C++ C++;从其线程函数引用boost::thread,c++,multithreading,boost,this,C++,Multithreading,Boost,This,我正在使用boost线程,我需要从它的线程函数中引用一个线程,这样我就可以用它对应的线程id将它存储在一个映射中。主要思想是我将使用另一个线程通过查询proc表来收集线程统计信息,所以我不能使用boost::this_thread::get_id()。我需要存储线程,以便调用特定线程上的中断和连接 下面的insert语句不起作用,但我希望这个or&this引用线程 线程函数: workerFunc(){ std::string tid; tid=boost::lexical_ca
boost::this_thread::get_id()
。我需要存储线程,以便调用特定线程上的中断和连接
下面的insert语句不起作用,但我希望这个or&this引用线程
线程函数:
workerFunc(){
std::string tid;
tid=boost::lexical_cast<string>(syscall(SYS_gettid));
threadMap.insert(pair<std::string,boost::thread>(tid,this));
}
workerFunc(){
std::字符串tid;
tid=boost::词法转换(syscall(SYS\u getid));
插入(对(tid,this));
}
目前,我让父线程进行插入,但等待线程获取其线程id,但这不是a想要的
如何在不使用父线程的情况下存储线程/指向线程的指针?通过使用函子而不是函数,可以向其添加状态。否,不能直接将
线程
对象传递给传递给线程
构造函数的函数(或函子)。它有点像“鸡蛋还是鸡”
应该填充此映射的实体是创建这些线程对象的管理器。为什么必须“等待线程获取其线程id”?我在文档中没有看到这样的要求-
get_id()
适用于任何“执行线程”,即非分离的thread
当你说下面的语句不起作用时,你是什么意思?它不编译吗?或者它没有按预期存储这对线程?我使用的是SYS\u getId
,我只能从线程内部调用它,因为我使用父线程存储线程,所以我需要等待每个线程获得它的SYS\u getId
,然后才能将线程存储在映射中。@user1668886我明白了。因此,无论如何,您都必须等待,因为对象创建和物理线程的启动是异步进行的。