Как сказал Мартин, во многих системах вы можете просто использовать pthread_t
потока в качестве уникального идентификатора. Вы можете получить это с помощью pthread_self(3)
, то есть POSIX. Вы можете использовать функцию pthread_equal(3)
, чтобы проверить два pthread_t
s на эквивалентность.
pthread_t threadID = pthread_self();
if (pthread_equal(threadID, someOtherID) != 0)
/* Branch based on being the same thread */
else
/* Branch based on being different threads */
Насколько я могу судить, pthread_getunique_np()
возвращает уникальный целочисленный идентификатор, который отличается от использования pthread_t
в качестве идентификатора. Во многих системах значения, возвращаемые как pthread_self(3)
, так и f pthread_getunique_np()
, являются одинаковыми. На самом деле вам нужно pthread_t
, чтобы получить уникальное целое число.
В любом случае, pthread_self(3)
требуется для возврата идентификатора потока, из которого он вызывается, поэтому я считаю, что вы должны иметь возможность использовать эту переносимую функцию так, как вам нужно.
(Информация о pthread_getunique_np()
из IBM )