Lbe*_*ben 1 python memory multithreading heap-memory stack-memory
我在线程对象中有一个函数,这个函数接受几个参数,我不知道当许多线程尝试使用这个函数时,这个线程是否会改变另一个线程的参数值?
我可以使用锁,但在分配参数之后。如果参数存储在堆栈中,我猜它们将位于每个线程堆栈中,但是如果它们位于堆中,如何避免线程更改另一个线程函数参数?
函数参数放在栈上,每个线程都有自己的栈。您不必担心它们的线程安全性。
但是,所有 Python 对象都存储在堆中;堆栈仅保存对此类对象的引用。如果多个线程正在访问一个这样的可变对象,如果访问以某种方式不同步,它们仍然可以相互干扰。然而,这与函数的调用方式无关。