2009-11-16 52 views

回答

2

如果ACE沒有提供這樣做的方法,你必須找出它的類型。鑑於它是ACE,它可能隱藏在嵌套在5個#defines中的3個typedef後面。頭文件OS_NS_Thread.h看起來像一個很好的起點。

+0

如果'ACE_thread_t'是像'pthread_t'它將歸結爲一個整數( 「%d」 或 「%X」)或指針( 「%P」)。這裏的基本原理是這些是(a)輕量級的,和(b)獨特的。情況可能並非如此。有可能'ACE_thread_t'將是一個複雜的類型。如果它是公開的,你可能可以從中得到id。如果不是,則需要進行一些API調用以獲取實際的線程ID。不過要非常小心,因爲類型可能會有所不同,從平臺到平臺並不保證可移植性。 – quark 2009-11-16 16:36:21

+0

對於「嵌套在5個#define中的3個typedef」+1!這是ACE風格。 – jfly 2014-03-13 03:24:49

1

ACE? C++?爲什麼不使用iostream而不是printf?

ACE_thread_t id = ACE_OS::thr_self(); 
unsigned char content[sizeof(id)]; 
size_t i; 
memcpy(content, &id, sizeof(id)); 
for (i=0; i<sizeof(id); ++i) printf("%02X",content[i]); 
+0

我不明白你已經使用它memcpy和循環在這裏? – 2017-06-14 05:59:10