什么词是指可以由两个不同的线程同时/并行执行的代码段/功能?

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

我在研究线程,同步和编写多线程程序时遇到过这个术语。如果我没记错的话,它指的是两个线程并行执行的代码段。

如果我记错了,它实际上可能是指可以同时运行的代码段。然后,我可能会完全离开(对不起)。

这个词在我的舌头上,我(拼命地)想要谷歌。

multithreading
2个回答
1
投票

RENTRANT和THREAD-SAFE。两者都是必要的。

请参阅this Wiki entry“reentrant”:

在计算中,计算机程序或子程序被称为可重入,如果它可以在执行过程中被中断,然后在其先前的调用完成执行之前再次安全地再次调用(“重新输入”)。中断可能是由内部操作(如跳转或调用)或外部操作(如硬件中断或信号)引起的。重新进入的调用完成后,先前的调用将恢复正确执行。

该定义源于单线程编程环境,其中控制流可以被硬件中断中断并转移到中断服务例程(ISR)。 ISR使用的任何子程序(可能在触发中断时可能已执行)应该是可重入的。通常,通过操作系统内核可访问的子例程不可重入。因此,中断服务程序在它们可以执行的动作中受到限制;例如,它们通常被限制访问文件系统,有时甚至不能分配内存。

直接或间接递归的子例程应该是可重入的。此策略部分由结构化编程语言强制执行。[引证需要]但是如果子例程依赖于全局变量保持不变但在递归调用子例程时修改了该变量,则子例程可能无法重入。

这种重入的定义不同于多线程环境中的线程安全性。一个可重入的子程序可以实现线程安全,1但单独重入可能不足以在所有情况下都是线程安全的。相反,线程安全代码不一定必须是可重入的(参见下面的示例)。

...


0
投票

我认为你正在寻找的术语是一个Critical Section - 一段代码,它在处理多个线程时的功能至关重要。

但是,你的问题提出了一个可以在多个线程上同时运行的代码块,这与一个关键部分不同 - 一个关键部分特别是一个代码块,一次只能在一个线程上运行,例如,增加一个银行存款余额。这是一种代码类型,人们可以期望多个线程可以尝试运行它,但特别要求实际上只允许一个线程一次运行它。

据我所知,没有名称可以在多个线程上同时执行的代码块,因为许多代码都是无害的。

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