gpt4 book ai didi

multithreading - 同时执行多个线程循环的并发编程?

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

我想知道是否有人知道并发(即多线程,并行等)编程语言,这种编程语言被设置为使得各个线程不会仅仅因为操作系统无法为其提供CPU时间而落后于彼此。我什至不确定组装是否可以避免这种情况。 :P但是,显然,我不确定这个问题。

我并不是说程序需要实时访问CPU周期,而是要说线程不应该不同步。而且,如果语言被编译为二进制可执行文件而不是字节码,或者仅由解释器运行,那将是非常不错的。

最佳答案

我相信没有这样的事情。

原因是,如果多个线程在不同的内核上执行,则只能并行地真正执行多个线程。实际上,直到采用多核处理器之前,从技术上讲不可能完全同时运行(计算)不同的线程。

现代OS使用大量的进程,因此使用大量的线程(至少在逐个进程的线程上,线程是进程的“工作”部分)。尽管有多核处理器,但在所有常见用法中,与可用核相比,系统上 Activity 的线程数仍然更多。

当我写这些行时,我有357个线程 Activity 对象,用于“仅” 8个可用内核。

那就是调度程序的用途。它们在不同线程之间共享可用的计算时间,以避免饥饿并给人以同时执行的幻想。

为了确保不同的线程同时运行并且不会不时地被替换,如果可能的话,应该修改OS的Scheduler,这至少是一个坏主意。

解释器的使用无济于事,因为它只能运行多线程应用程序,而无法创建解释线程,而解释器线程将具有相同的问题

为了确保不同线程同步,您应该使用barriere或信号灯,因为您将永远无法修改用户计算机的操作系统的Scheduler

注意:在HPC应用程序中,研究人员尝试避免在上下文切换中浪费时间(该操作保存了线程正在运行的环境,以便稍后进行恢复)。因此,他们根据可用的内核分配线程(通常他们只将一个内核留给OS和I/O),而将其他线程固定到特定的内核。这有助于他们确保尽可能高效地完成计算。

但是,这并不能实现同步,并且可能仍需要使用特定的机械手(例如屏障)。

关于multithreading - 同时执行多个线程循环的并发编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12471801/

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