2016-04-21 25 views
1

在Linux中,我需要检查一个地址是否属于线程的堆栈。我发现pthread_attr_getstack适用于此目的。从std :: thread转到相关的pthread

我认为std :: thread是基于pthreads的,所以从std :: thread我可能会发现一个pthread并将其与pthread_attr_getstack一起用来检查指针是否指向堆栈内部。那可能吗?怎么样?

+1

'std :: thread'可以有一个名为'native_handle()'的成员函数;它是否存在实现定义。如果它存在,它将返回一个'native_handle_type'类型的对象,其含义和可能的用途是实现定义的。如果这对你有用,就去做吧。 –

回答

3

您是否尝试阅读文档?它非常清楚:

std :: thread :: native_handle:返回基础线程句柄定义的实现 。

查看更多在这里:http://en.cppreference.com/w/cpp/thread/thread/native_handle

在获得native_handle可以将此句柄传递给任何pthread例程你的心脏的欲望(合理地相信你的实现是基于并行线程,因为它可能不是!)。

+0

我没有,但正如你所说,我不知道是否通过p_thread或以什么方式完成实现。所以你也告诉我,我不知道这是正确的手柄。 –

+0

@GeorgeKourtis,好吧,一旦你进入这样的深度,你只需要知道你的实现。 – SergeyA

+0

顺便说一下,使用的编译器是从我所说的pthread是实现的gcc :-)。 –

相关问题