pthread_mutex_unlock如何区分线程?

How pthread_mutex_unlock distinguish threads?

只有互斥量的拥有者才能解锁。但是mutex怎么区分线程是加锁的呢? 线程在Linux中有什么显着特征吗?

您可以查看实现源代码以获取详细信息(可以浏览 GNU libc Git 存储库中的 pthread 实现 here),但是它们有内部使用的不同 ID。您可以使用 pthread_self() 在应用程序级别看到这一点。它 returns 一个 pthread_t 值,在给定进程中的每个线程的基础上是唯一的。当您比较来自不同进程的 pthread_t 值时,无法保证唯一性。

然而,pthread_t对应的实际类型是实现定义的;它可以是算术(例如整数)类型,也可以是结构。因此,除了使用 pthread_equal().

比较它们是否相等外,您不能以可移植的方式对它们做太多事情。

它们是通过线程id来区分的;