gpt4 book ai didi

c - smp 系统上的 Posix 线程

转载 作者:太空宇宙 更新时间:2023-11-04 10:14:03 24 4
gpt4 key购买 nike

我在 linux 系统中开发了一个 C 应用程序,其中有 12 个 posix 线程。它是一个多核系统。阅读后我发现内核只知道我的进程,它不会知道线程(posix 库会处理)。在这种情况下,我的 12 个线程是否将仅使用进程被调度的 onecore,或者我的线程可以在所有可用内核中运行?Posix 库是否可以将线程调度到其他内核?

最佳答案

从历史上看,有相当多的库实现了类似 POSIX 线程的功能。 LinuxThreads 随 glibc 一起提供,但由于早期内核的限制(例如线程特定的当前目录和 umask),存在严重的一致性问题。它实际上可以在同一时间在不同 CPU 上的同一进程中运行多个线程(当时人们不说内核)。 FSU 线程具有更好的 POSIX 一致性(即使在 PI 调度领域,如果我没记错的话),但每个进程仅限于一个 CPU。许多线程库还尝试了 n:m 方案,其中大量用户空间线程在少量内核调度线程(可以在不同 CPU 上并行运行)上执行。

对于 Linux 和 C/C++,当 NPTL 被添加到 glibc 并且与库的其余部分越来越紧密地集成时,这几乎停止了。 NPTL 具有 1:1 模型:每个用户空间线程对内核可见并且可以并行运行,只要有足够的硬件资源可用。

关于c - smp 系统上的 Posix 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47311945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com