Multithreading 如果函数没有';不使用全球数据?

Multithreading 如果函数没有';不使用全球数据?,multithreading,parallel-processing,architecture,processor,machine-code,Multithreading,Parallel Processing,Architecture,Processor,Machine Code,我已经思考了几天了:当我把一个函数编译成机器代码时,它只是整个代码库的一个独特部分。当我调用函数时,参数会被复制,进程的指令指针会跳到函数的开头。对吗 如果是这样的话,我不明白如果函数不使用全局数据,它们怎么可能是线程安全的。假设两个线程同时使用不同的数据调用同一个函数。因此,它们都在RAM中使用相同的指令数据。如何确保他们不会混淆?这就是上下文切换的目的吗 我想我对函数如何在机器代码级别上工作有些误解。感谢您的帮助。不是完整的答案,但是 如果您想了解有关它的所有计算机科学知识,那么活动函数调用

我已经思考了几天了:当我把一个函数编译成机器代码时,它只是整个代码库的一个独特部分。当我调用函数时,参数会被复制,进程的指令指针会跳到函数的开头。对吗

如果是这样的话,我不明白如果函数不使用全局数据,它们怎么可能是线程安全的。假设两个线程同时使用不同的数据调用同一个函数。因此,它们都在RAM中使用相同的指令数据。如何确保他们不会混淆?这就是上下文切换的目的吗


我想我对函数如何在机器代码级别上工作有些误解。感谢您的帮助。

不是完整的答案,但是

如果您想了解有关它的所有计算机科学知识,那么活动函数调用的参数和局部变量的存储位置的名称是。我们在大多数现代编程语言中经常提到的“堆栈”,实际上是激活记录的堆栈

我已经足够大了,可以使用静态分配函数激活记录的语言,这意味着递归在这些语言中是不可能的,如果有人想到线程,线程也不可能实现。我还听说过一种编程语言,其中激活记录是从堆中分配的第一类对象