对于线程和操作系统构造来说,这是一个全新的概念,我想知道是否有人能为我澄清一些事情。在C中实现线程时,你可以访问POSIX线程,POSIX线程是操作系统级线程吗?运行在内核级吗?在Java中,当创建和运行线程时,这些是用户级线程吗?我们对Java中的OS级结构有什么级别的访问权限?Java中的信号量只是在用户空间中设置的吗?提前感谢您对这些问题的任何见解。
8e2ybdfx1#
POSIX线程是内核线程。内核线程是“普通”线程;如果你在C语言中使用用户线程,你就会知道(因为你必须自己编写整个线程系统)。Java线程通常也是内核线程,在类Unix系统上,它们可能使用POSIX线程;在Windows上,它们使用Windows线程。2可以想象,对于一个没有线程的系统,有一个JVM,它实现线程本身(作为用户线程)。
46qrfjad2#
添加到***@user253751***答案中,另一个迹象表明,使用pthread库创建的线程通常是(实质上)内核线程,是由于在第二个参数中传递给pthread_create的值。(但不是强制性的)此API的使用方式是attr参数为NULL --〉,这意味着此线程将是内核(感知)线程。
pthread_create
attr
int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void *), void *restrict arg);
2条答案
按热度按时间8e2ybdfx1#
POSIX线程是内核线程。内核线程是“普通”线程;如果你在C语言中使用用户线程,你就会知道(因为你必须自己编写整个线程系统)。
Java线程通常也是内核线程,在类Unix系统上,它们可能使用POSIX线程;在Windows上,它们使用Windows线程。2可以想象,对于一个没有线程的系统,有一个JVM,它实现线程本身(作为用户线程)。
46qrfjad2#
添加到***@user253751***答案中,另一个迹象表明,使用pthread库创建的线程通常是(实质上)内核线程,是由于在第二个参数中传递给
pthread_create
的值。(但不是强制性的)此API的使用方式是attr
参数为NULL --〉,这意味着此线程将是内核(感知)线程。