如何解决从单线程应用程序调用pthread_self
在Linux上,ps -Lf
将在列LWP
中显示线程ID,并在NLWP
列中显示线程数。任何单线程进程都将具有相同的PID
和LWP
值。
pthread_self()
在单线程应用程序上应该返回什么?最初,我期望其值应与执行此调用的进程ID相同,但结果不同。然后,我读了man pthread_self
和man gettid
,得知pthread_self()
返回的值与gettid()
结果不同。
那么我什至可以相信在非线程环境(进程)中执行的pthread_self()
输出吗?
解决方法
pthread_self被定义为返回调用线程的ID,而不管程序是否 是多线程还是单线程。
您发现,pthread_self()
的返回值与Linux中的LWP(gettid
)不同,因此它在流程之外没有任何意义; pthread_t
是
不透明的类型。相关:The thread ID returned by pthread_self() is not the same thing as the kernel thread ID returned by a call to gettid(2)
它的实用程序非常有限,因为在单线程程序中pthread_t
并没有太多实际用途。例如,您可以在pthread_setschedparam
中使用。
但是,如果您要问是否在单线程程序中返回任何有效值,那么答案是肯定的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。