【发布时间】:2011-12-19 18:43:48
【问题描述】:
假设我们有很多用户进程在 Linux 上运行。每个进程都有许多线程在运行。
我可以通过调用getpid()获取进程ID,它的返回值是一个整数。
我可以通过调用pthread_self()获取线程ID,它的返回值是一个名为pthread_t的不透明类型。
现在我需要将进程 ID(一个 int,通常为 4 个字节)和线程 ID(pthread_t,需要计算出多少字节)存储在共享内存中,以便我以后可以使用这两个 ID用于识别该特定线程并检查该线程是否仍在运行的信息。
我发现许多在线资源将pthread_t 转换为unsigned int 或unsigned long。由于我不希望在转换过程中丢失任何数据,我应该如何处理pthread_t 数据,使其成为固定大小的数据(如前所述,我需要将线程信息存储在共享内存中)。
另外,我以后应该如何通过进程 ID 和线程 ID 的组合来识别该特定线程?如何检查线程是否仍在运行?
【问题讨论】:
-
进程ID和线程ID可以重复使用,所以我相信你的整个方法是有缺陷的......
-
@Nemo 你是对的。让我们假设不同的进程和线程总是有不同的 ID 来区分关注点。
标签: c++ c linux process pthreads