2016-04-21 28 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 :-)。 –

相關問題