首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
物联网/工业互联网
›
物联网
›
.NET/C#⾯试题汇总系列:多线程
返回列表
发新帖
.NET/C#⾯试题汇总系列:多线程
[复制链接]
发表于 2026-1-23 01:54:56
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
1.根据线程
安全
的相干知识,分析以下
代码
,当调⽤test⽅法时i>10时是否会引起死锁?并简 要阐明来由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
复制
代码
不会发⽣死锁,(但有⼀点int是按值转达的,以是每次改变的都只是⼀个副本,因此不会出现死锁。但如 果把int换做⼀个object,那么死锁会发⽣)
lock 关键字:
用于确保当多个线程同时访问共享资源时,不会发生数据竞争(race condition)或数据不划一的题目。
lock 语句通过获取给定对象的互斥锁来同步
代码
块,以确保一次只有一个线程可以实行该代码块。
示例 : 线程
安全
的聚集使用
public class ThreadSafeList<T>
{
private readonly List<T> _list = new List<T>();
private readonly object _lockObject = new object();
public void Add(T item)
{
lock (_lockObject)
{
_list.Add(item);
}
}
public void Remove(T item)
{
lock (_lockObject)
{
_list.Remove(item);
}
}
public List<T> GetAll()
{
lock (_lockObject)
{
return new List<T>(_list);
}
}
}
复制代码
在这个例子中,我们创建了一个线程
安全
的列表类 ThreadSafeList<T>,此中 Add 和 Remove 方法使用 lock 来确保对列表的修改是线程安全的。GetAll 方法也使用 lock 来确保在返回列表的副本时,列表的状态是划一的。
2.形貌线程与历程的区别?
界说与区别
:
历程
(Process)是体系举行资源分配和调理的一个独立单元,是使用体系布局的根本。它是应用步伐的一次动态实行过程,是步伐代码及其数据在运行时的一个实例。它拥有独立的内存空间,包罗一组体系资源(如代码、数据和打开的文件等)。
线程
(Thread)是历程的一个实体,是CPU调理和分派的根本单元,它是比历程更小的独立运行的单元。一个历程可以拥有多个线程,这些线程共享该历程的全部资源(如内存和打开的文件),但每个线程都拥有自己独立的实行栈和步伐计数器。
资源与开销
:
历程拥有独立的内存空间和体系资源,因此历程间的通讯相对复杂,开销也较大。
线程共享历程的资源,因此线程间的通讯相对简单,开销也较小。
独立性
:
历程拥有更高的独立性,一个历程的瓦解通常不会影响到其他历程。
线程则否则,一个线程的瓦解大概会导致整个历程的瓦解(取决于线程的非常处置惩罚机制)。
3.Windows单个历程所能访问的最⼤内存量是多少?它与体系的最⼤假造内存⼀样吗?这对 于体系计划有什么影响?
这个必要针对硬件平台,公式为单个历程能访问的最⼤内存量=2的处置惩罚器位数次⽅/2,⽐如通常环境下,
回复
使用道具
举报
返回列表
浏览过的版块
前端开发
分布式数据库
勿忘初心做自己
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表