Python线程模块创建用户空间线程或内核特殊线程
简答案用户空间线程。 根据我对系统知识的回答,一个进程(或线程)不是用户级别或内核级别。
某些关键任务不能由用户直接访问,例如内存和IO。要使用这些resources
,内核将会公开API's
。 这些API最好称为system calls
。 所以你的线程可能会在你的程序中使用那些system calls
。但是你不能只产卵内核线程
,正确的说法是不内核空间线程(因为Python没有访问内核内存空间),但内核级线程。 threading
模块使用系统提供的机制(如POSIX系统上的pthread
),通常依靠内核接口(通过Linux上的clone(CLONE_THREAD)
创建任务)。
Python支持用户级线程(那些纯粹在解释器中实现并且只占用一个内核级线程的线程)通过生成器,greenlet和类似的库。
这意味着不同于pthread(它创建内核空间线程),Python线程模块为我们提供了用户空间线程 – user3282758
@ user3282758:'线程'很有可能在引擎盖下使用'pthread'。 – myaut
如果在引擎盖下使用pthread,那我们为什么不把它们称为内核空间线程 – user3282758
如果我使用pthread库来创建线程,那么这些线程是不是内核级线程 – user3282758
我还不清楚Python线程模块在我们创建新的python线程时是否内部使用pthread_create,还是创建用户级别线程 – user3282758