pthread_t不管实际是什么,这都会打印出a的十六进制表示形式:
void fprintPt(FILE *f, pthread_t pt) { unsigned char *ptc = (unsigned char*)(void*)(&pt); fprintf(f, "0x"); for (size_t i=0; i<sizeof(pt); i++) { fprintf(f, "%02x", (unsigned)(ptc[i])); }}只需为每个打印一个小的id,
pthread_t可以使用如下所示的东西(这次使用iostreams):
void printPt(std::ostream &strm, pthread_t pt) { static int nextindex = 0; static std::map<pthread_t, int> ids; if (ids.find(pt) == ids.end()) { ids[pt] = nextindex++; } strm << ids[pt];}根据平台及其实际表示,
pthread_t此处可能需要定义
operator<for
pthread_t,因为
std::map需要对元素进行排序:
bool operator<(const pthread_t &left, const pthread_t &right) { ...}


