pthread_create()是否总是在用户线程与内核线程之间创建一对一的映射吗?

时间:2019-04-09 04:57:51

标签: multithreading linux-kernel

我想澄清x86体系结构上Linux中的用户线程和内核线程映射。

我想不出使用pthread库时在用户线程与内核线程之间具有多对一映射的情况。

例如,下面的用户空间代码使用pthread_create()创建10个用户线程。我的理解是,每个pthread_create()本质上都调用带有标志clone()的系统调用CLONE_THREAD,这在内核空间中创建了一个轻量级进程。因此,在这种情况下,总共创建了10个内核进程/线程。

因此,如果使用pthread,则用户线程和内核线程之间的映射始终是一对一的。

我对这个结论正确吗?

如果是这样,以防万一我想在用户线程和内核线程之间创建多对一或多对多映射,那么应该使用什么合适的API?还是由内核选择而不是由用户控制映射?

int main()
{
    for(int i = 0; i < 10; i++)
        pthread_create(xxx....).
    return 0;
}

0 个答案:

没有答案