1

在 Linuxps -Lf上将在列中显示线程 ID,并在列中显示线程LWPNLWP。任何单线程进程都将具有相同PIDLWP值。

pthread_self()单线程应用程序应该返回什么?最初我期望它的值应该与进程 ID 相同,执行此调用,但结果不同。然后我阅读man pthread_selfman gettid了解到返回的值pthread_self()gettid()结果不同。

那么我什至可以信任pthread_self()在非线程环境(进程)中执行的输出吗?

4

1 回答 1

2

pthread_self被定义为返回调用线程的 ID,无论程序是多线程还是单线程。

如您所见, 的返回值与pthread_self()Linux ( ) 中的 LWP 不同,gettid因此它在进程之外没有任何意义;pthread_t是不透明的类型。相关:pthread_self() 返回的线程 ID 与调用 gettid(2) 返回的内核线程 ID 不同

它的实用性非常有限,因为pthread_t在单线程程序中没有太多实际用途。例如,您可以使用pthread_setschedparam

但是如果你问在单线程程序中是否返回任何有效值,那么答案是肯定的。

于 2020-08-12T19:19:43.243 回答