举例来说是否安全:
void AddTwo(int &num)
{
num +=2;
}
void ThreadProc(lpvoid arg)
{
AddTwo((int)arg);
}
如果4个线程同时执行此操作,是否会发生这种情况?感谢
答案 0 :(得分:23)
该功能本身可以安全地呼叫。如果他们都试图对同一个变量进行操作,就会变得危险。
答案 1 :(得分:2)
从不同的线程调用相同的函数没有错。如果要确保变量一致,建议提供线程同步机制以防止崩溃,竞争条件。
答案 2 :(得分:1)
安全性取决于lpvoid arg的值。
如果所有的参数彼此不同,则安全,否则不安全。
要使函数调用安全,请查看“互斥锁”。
答案 3 :(得分:1)
作为一般经验法则,如果函数不改变任何公共资源(例如相同的内存位置),则该函数是可重入的。如果是,则需要使用某种同步机制,如互斥锁或信号量。
答案 4 :(得分:0)
真正的答案是 - 这取决于......
在大多数平台上,只要你不做其他人提到的功能不安全的事情,它是安全的。这很容易搞砸,所以要小心!
在其他平台上,它绝对是不安全的。例如,由于硬件限制,大多数较小PIC单片机的C编译器无法支持此功能。
一般来说,是的,这是安全的。