gpt4 book ai didi

multithreading - 线程成本

转载 作者:行者123 更新时间:2023-12-03 12:43:42 26 4
gpt4 key购买 nike

我了解如何使用所选语言创建线程,并且了解互斥锁以及共享数据等的危险,但是我确定操作系统将如何管理线程以及每个线程的成本。我有很多与之相关的问题,而表达我的理解极限的最清晰方法可能就是通过这些问题。

产生线程的成本是多少?设计软件时甚至值得担心吗?创建线程的成本之一必须是其自己的堆栈指针和进程计数器,然后是在调度程序将其移入或移出内核时将所有工作寄存器复制到的空间,但是还有什么呢?

是可用于一个程序的堆栈数量在进程的线程之间平均分配,还是先到先得?

我能以某种方式检查(程序的)启动时的硬件是否有内核数量。如果我在具有N个内核的计算机上运行,​​是否应该将线程数保持为N-1?

最佳答案

then space to copy all of the working registeres to as it is moved on and off of a core by the scheduler, but what else?



一种不太明显的成本是对调度程序施加的压力,如果需要处理数千个线程,该压力可能会开始阻塞。内存并不是真正的问题。通过正确的调整,您可以获得一个“线程”以占用很少的内存,而不仅仅是其堆栈。这种调整可能很困难(即直接在linux下使用 clone(2)等),但是可以做到这一点。

Is the amount of stack available for one program split equally between threads of a process or on a first come first served



每个线程都有自己的堆栈,通常您可以控制其大小。

If I am running on a machine with N cores, should I keep the number of threads to N-1



检查核的数量很容易,但是特定于环境。但是,仅当您的工作负载包含CPU密集型操作且I/O很少时,才将线程数限制为内核数才有意义。如果涉及到I/O,则您可能希望拥有比内核更多的线程。

关于multithreading - 线程成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14840887/

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