C语言 Java线程和POSIX线程,用户级还是内核级?

cpjpxq1n  于 2023-02-21  发布在  Java
关注(0)|答案(2)|浏览(147)

对于线程和操作系统构造来说,这是一个全新的概念,
我想知道是否有人能为我澄清一些事情。
在C中实现线程时,你可以访问POSIX线程,POSIX线程是操作系统级线程吗?运行在内核级吗?
在Java中,当创建和运行线程时,这些是用户级线程吗?我们对Java中的OS级结构有什么级别的访问权限?Java中的信号量只是在用户空间中设置的吗?
提前感谢您对这些问题的任何见解。

8e2ybdfx

8e2ybdfx1#

POSIX线程是内核线程。内核线程是“普通”线程;如果你在C语言中使用用户线程,你就会知道(因为你必须自己编写整个线程系统)。
Java线程通常也是内核线程,在类Unix系统上,它们可能使用POSIX线程;在Windows上,它们使用Windows线程。2可以想象,对于一个没有线程的系统,有一个JVM,它实现线程本身(作为用户线程)。

46qrfjad

46qrfjad2#

添加到***@user253751***答案中,另一个迹象表明,使用pthread库创建的线程通常是(实质上)内核线程,是由于在第二个参数中传递给pthread_create的值。(但不是强制性的)此API的使用方式是attr参数为NULL --〉,这意味着此线程将是内核(感知)线程。

int pthread_create(pthread_t *restrict thread,
                   const pthread_attr_t *restrict attr,
                   void *(*start_routine)(void *),
                   void *restrict arg);

相关问题