多个线程调用相同的函数是否安全?

例如,安全吗:

void AddTwo(int &num) { num +=2; } void ThreadProc(lpvoid arg) { AddTwo((int)arg); } 

如果4个线程同时执行此操作,是否会发生这种情况? 谢谢

该function本身可以安全地呼叫。 如果他们都试图对同一个变量进行操作就会变得危险。

从不同的线程调用相同的函数没有错。 如果要确保变量一致,建议提供线程同步机制以防止崩溃,竞争条件。

安全取决于lpvoid arg的值。

如果所有的args彼此不同,那么安全,否则不安全。

要使函数调用安全,请查看“互斥锁”。

作为一般经验法则,如果函数不改变任何公共资源(例如,相同的存储器位置),则该函数是可重入的。 如果是,则需要使用某种同步机制,如互斥锁或信号量。

真正的答案是 – 这取决于……

在大多数平台上,只要你不做其他人提到的function不安全的事情,它是安全的。 这很容易搞砸所以要小心!

在其他平台上,它绝对是不安全的。 例如,由于硬件限制,大多数较小PIC单片机的C编译器无法支持此function。

一般来说,是的,它是安全的。