在Linux中,我需要检查一个地址是否属于线程的堆栈。我发现pthread_attr_getstack
适用于此目的。从std :: thread转到相关的pthread
我认为std :: thread是基于pthreads的,所以从std :: thread我可能会发现一个pthread并将其与pthread_attr_getstack
一起用来检查指针是否指向堆栈内部。那可能吗?怎么样?
在Linux中,我需要检查一个地址是否属于线程的堆栈。我发现pthread_attr_getstack
适用于此目的。从std :: thread转到相关的pthread
我认为std :: thread是基于pthreads的,所以从std :: thread我可能会发现一个pthread并将其与pthread_attr_getstack
一起用来检查指针是否指向堆栈内部。那可能吗?怎么样?
您是否尝试阅读文档?它非常清楚:
std :: thread :: native_handle:返回基础线程句柄定义的实现 。
查看更多在这里:http://en.cppreference.com/w/cpp/thread/thread/native_handle
在获得native_handle
可以将此句柄传递给任何pthread
例程你的心脏的欲望(合理地相信你的实现是基于并行线程,因为它可能不是!)。
我没有,但正如你所说,我不知道是否通过p_thread或以什么方式完成实现。所以你也告诉我,我不知道这是正确的手柄。 –
@GeorgeKourtis,好吧,一旦你进入这样的深度,你只需要知道你的实现。 – SergeyA
顺便说一下,使用的编译器是从我所说的pthread是实现的gcc :-)。 –
'std :: thread'可以有一个名为'native_handle()'的成员函数;它是否存在实现定义。如果它存在,它将返回一个'native_handle_type'类型的对象,其含义和可能的用途是实现定义的。如果这对你有用,就去做吧。 –