多线程程序对函数调用的底层问题

多线程程序对函数调用的底层问题,第1张

函数的机器码只有一份。如果变量函数内的局部变量,几个线程调用就有几份,如果是全局变量就只有一份,如果你不加锁,多个线程是可以同时读写的,那么读写出来的就是垃圾了,要实现线程安全,可以
1 访问变量的时候上锁。例:
void testFunc() {
。。。
{
AutoLock lock; // AutoLock 实在构造函数中 EnterCriticalSection 上锁, 在析构函数中 LeaveCriticalSection 解锁。
访问变量;
}
。。。
}

2 用原子 *** 作API,win上是 好像是 InterlockedExchange ,就是 Interlockedxxxx 系列的。
不过这种裸奔方式的API最好少用。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12156033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存