全站数据
8 4 2 0 5 8 1

C#里面对于比如4核8线程的CPUlock可以达到同步吗

飘落的雪教师 | 简单学习,快乐成才!         
问题更新日期:2024-11-02 13:56:05

问题描述

C#里面对于比如4核8线程的CPUlock可以达到同步吗,麻烦给回复
精选答案
最佳答案

有可能同时执行到lock这个地方,同时执行lock操作,但是没可能同时lock成功:有一些线程会卡在lock上面而无法继续执行,有一个线程会lock成功而执行里面的代码。

lock成功的线程继续执行,lock失败的线程会进入睡眠状态。

等到lock成功的那个线程执行完了出了那个lock块,系统就会唤醒一个进入睡眠状态的线程进去执行,以此类推。就是一次只能进去一个线程至于原理,根据《Windows并发编程指南》一书,在x86平台上,所有这样的操作都是基于由硬件提供的“比较并交换”机器指令来实现的。

你可以去找找汇编语言里带lock前缀的cmpxchg指令来看看