iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C# 中lock关键字的作用是什么
  • 236
分享到

C# 中lock关键字的作用是什么

2023-06-18 00:06:03 236人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关C# 中lock关键字的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical se

这篇文章将为大家详细讲解有关C# 中lock关键字的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。在C# lock关键字定义如下:

lock(expression) statement_block

expression代表你希望跟踪的对象,通常是对象引用。

如果你想保护一个类的实例,一般地,你可以使用this;如果你想保护一个静态变量(如互斥代码段在一个静态方法内部),一般使用类名就可以了。

而statement_block就是互斥段的代码,这段代码在一个时刻内只可能被一个线程执行。

下面是一个使用C# lock关键字的典型例子,在注释里说明了C# lock关键字的用法和用途。

示例如下:

usingSystem;  usingSystem.Threading;   namespaceThreadSimple  {  internalclassAccount  {  intbalance;  Randomr=newRandom();   internalAccount(intinitial)  {  balance=initial;  }   internalintWithdraw(intamount)  {  if(balance<0)  {  //如果balance小于0则抛出异常  thrownewException("NegativeBalance");  }  //下面的代码保证在当前线程修改balance的值完成之前  //不会有其他线程也执行这段代码来修改balance的值  //因此,balance的值是不可能小于0的  lock(this)  {  Console.WriteLine("CurrentThread:"+Thread.CurrentThread.Name);  //如果没有lock关键字的保护,那么可能在执行完if的条件判断之后  //另外一个线程却执行了balancebalance=balance-amount修改了balance的值  //而这个修改对这个线程是不可见的,所以可能导致这时if的条件已经不成立了  //但是,这个线程却继续执行balancebalance=balance-amount,所以导致balance可能小于0  if(balance>=amount)  {  Thread.Sleep(5);  balancebalance=balance-amount;  returnamount;  }  else  {  return0;//transactionrejected  }  }  }  internalvoidDoTransactions()  {  for(inti=0;i<100;i++)  Withdraw(r.Next(-50,100));  }  }   internalclassTest  {  staticinternalThread[]threads=newThread[10];  publicstaticvoidMain()  {  Accountacc=newAccount(0);  for(inti=0;i<10;i++)  {  Threadt=newThread(newThreadStart(acc.DoTransactions));  threads[i]=t;  }  for(inti=0;i<10;i++)  threads[i].Name=i.ToString();  for(inti=0;i<10;i++)  threads[i].Start();  Console.ReadLine();  }  }  }

关于C# 中lock关键字的作用是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: C# 中lock关键字的作用是什么

本文链接: https://www.lsjlt.com/news/294768.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C# 中lock关键字的作用是什么
    这篇文章将为大家详细讲解有关C# 中lock关键字的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical se...
    99+
    2023-06-18
  • C#中that关键字的作用是什么
    C#中that关键字的作用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。如果在C#增加that关键字,将会表示什么意思简单分析可以发现,C#增加that关...
    99+
    2023-06-18
  • C++中explicit关键字的作用是什么
    本篇文章为大家展示了C++中explicit关键字的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。如果C++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对...
    99+
    2023-06-17
  • C# 中using关键字的作用是什么
    今天就跟大家聊聊有关C# 中using关键字的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C# using关键字微软MSDN上解释总共有三种用途:引用命名空间,这样就可以...
    99+
    2023-06-18
  • C# 中this关键字的作用是什么
    这篇文章给大家介绍C# 中this关键字的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。以下是 this 的常用用途:◆限定被相似的名称隐藏的成员◆将对象作为参数传递到其他方法◆声明索引器C# this关键字...
    99+
    2023-06-17
  • C# 中base关键字的作用是什么
    今天就跟大家聊聊有关C# 中base关键字的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C# base关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法...
    99+
    2023-06-17
  • C#中 New关键字的作用是什么
    C#中 New关键字的作用是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、在C#中,new这个关键字使用频率非常高,主要有3个功能:1)作为运算符用来创建一个对象和调用...
    99+
    2023-06-17
  • c++ volatile关键字的作用是什么
    在C++中,volatile关键字的作用是告诉编译器不要对变量进行优化,即不要将变量缓存在寄存器中,应该直接从内存中读取或写入变量。...
    99+
    2023-10-28
    c++
  • c++ decltype关键字的作用是什么
    `decltype`关键字的主要作用是用于推断表达式的类型。它可以在编译时根据表达式的类型推导出相应的类型,并将其作为`declty...
    99+
    2023-10-12
    c++
  • C语言中static关键字的作用是什么
    本篇内容介绍了“C语言中static关键字的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!static这个关键字是“静态”的意思,...
    99+
    2023-07-05
  • c语言关键字static的作用是什么
    在C语言中,关键字static有以下几种作用:1. 静态变量:static关键字可以用于声明静态变量,静态变量存储在静态存储区,在程...
    99+
    2023-09-14
    c语言 static
  • C语言volatile关键字的作用是什么
    本篇内容介绍了“C语言volatile关键字的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!写在前面版本信息:Linux操作系统,...
    99+
    2023-07-06
  • c语言register关键字的作用是什么
    C语言中的register关键字用于向编译器建议将变量存储在寄存器中,以便更快地访问。它是一种优化技术,用于提高程序的执行速度。使用...
    99+
    2023-09-16
    c语言
  • C++中inline关键字有什么作用
    本篇内容介绍了“C++中inline关键字有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!inline关键字:目的:在 c/c++ ...
    99+
    2023-06-21
  • SQL中distinct关键字的作用是什么
    在SQL中,DISTINCT关键字用于返回唯一不重复的记录。当在SELECT语句中使用DISTINCT关键字时,查询结果将只返回不重...
    99+
    2023-09-14
    SQL
  • java中instanceof 关键字的作用是什么
    本篇文章给大家分享的是有关java中instanceof 关键字的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。instanceof instanceof 是Java...
    99+
    2023-06-14
  • VB.NET中New关键字的作用是什么
    这篇文章给大家介绍VB.NET中New关键字的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用VB.NET New关键字建立一个新的对象和用它属的类来定义是一样的。New关键字可以被用作来建立一个窗体、类模...
    99+
    2023-06-17
  • PHP中global关键字的作用是什么
    本篇文章为大家展示了PHP中global关键字的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。PHP关键字global如果用在function内部,则说明这个function内用的这个变量...
    99+
    2023-06-17
  • java中this关键字的作用是什么
    在Java中,this关键字代表当前对象的引用。它的主要作用有以下几点:1. 表示当前对象:在类的方法中,this关键字可以用来引用...
    99+
    2023-08-31
    java
  • java中abstract关键字的作用是什么
    在Java中,abstract关键字用来定义抽象类和抽象方法。 抽象类:使用abstract关键字修饰的类称为抽象类。抽象类是一...
    99+
    2023-10-23
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作