【问题标题】:How to implement thread library?如何实现线程库?
【发布时间】:2010-12-09 08:22:31
【问题描述】:

编写用于实现线程库的代码是内核代码的一部分吗? pthread_create() 等函数的实现是内核的一部分吗?

【问题讨论】:

    标签: multithreading operating-system linux-kernel


    【解决方案1】:

    在 Linux 中,pthread_create() 等。作为 glibc 项目的一部分实现。它使用(非便携式、Linux 特定的)系统调用clone()。 (Linux的fork()也是按照clone()来实现的)。一些 BSD 也有类似的系统调用,称为 rfork()

    我的理解是clone()rfork() 都将创建一个新进程,但是您可以指定一个标志,上面写着“使用写时复制语义给它一个不同的地址空间”。所以,如果你想要fork(),你可以指定那个标志,但是如果你想创建一个线程,你不需要,你最终会得到一个共享的地址空间。

    (已编辑以提供更多详细信息)

    【讨论】:

      【解决方案2】:

      线程有时纯粹在用户空间中实现(然后也称为“绿色线程”),但通常在内核空间中实现。 wikipedia article 解释得很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-08
        • 1970-01-01
        • 2020-02-08
        • 2010-10-10
        • 1970-01-01
        • 1970-01-01
        • 2013-12-09
        • 1970-01-01
        相关资源
        最近更新 更多