多个内核/处理器上的多线程处理

问题描述 投票:-1回答:2

我的想法是,如果锁定和解锁互斥锁是原子操作,那么在单处理器体系结构的情况下,它可以保护代码的关键部分。任何将首先进行调度的线程都将能够在单个机器代码操作中“锁定”互斥锁。但是,当线程在多个内核上运行时,互斥锁有什么好处? (其中不同的线程可以同时在不同的“核心”上同时运行)。我似乎无法掌握多线程程序如何在多个内核上没有任何死锁或竞争条件的情况下工作的想法?

multithreading mutex
2个回答
0
投票

线程是由操作系统管理的,除其他外,它负责将线程调度到内核,因此也可以避免将特定线程调度到内核上。

互斥锁是操作系统的概念。您基本上是在要求OS阻塞线程,直到其他线程告诉OS没关系


0
投票

在现代操作系统上,线程是物理硬件的抽象。程序员将线程作为代码执行的抽象。没有可用的硬件核心的单独抽象。操作系统负责将线程映射到物理内核。

互斥锁是驻留在系统内存中的数据结构。任何具有访问权限的线程都可以读取该内存位置,而不管它在哪个线程或内核中运行。无论您的代码是在内核1还是20上执行都无关紧要,它仍然可以读取内存的当前状态。锁定。

换句话说,无论线程或核心的数量如何,只有共享的系统内存才能使它们起作用。

© www.soinside.com 2019 - 2024. All rights reserved.