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来区分的;
只有互斥量的拥有者才能解锁。但是mutex怎么区分线程是加锁的呢? 线程在Linux中有什么显着特征吗?
您可以查看实现源代码以获取详细信息(可以浏览 GNU libc
Git 存储库中的 pthread
实现 here),但是它们有内部使用的不同 ID。您可以使用 pthread_self()
在应用程序级别看到这一点。它 returns 一个 pthread_t
值,在给定进程中的每个线程的基础上是唯一的。当您比较来自不同进程的 pthread_t
值时,无法保证唯一性。
然而,pthread_t
对应的实际类型是实现定义的;它可以是算术(例如整数)类型,也可以是结构。因此,除了使用 pthread_equal()
.
它们是通过线程id来区分的;