当前位置: 首页 > news >正文

网站建设的投资必要性网站建制作

网站建设的投资必要性,网站建制作,做易拉宝设计的网站,淄博桓台学校网站建设方案如果程序希望使用一个值类型实例来进行同步#xff0c;通常都会是错误(bug)。但运行时应该认为这是非法并抛出异常吗?在下面的代码示例中如果两个不同的线程同时调用同一个Counter 实例的Increment 方法#xff0c;将会发生什么?class Counter{private int _i;public int I…       如果程序希望使用一个值类型实例来进行同步通常都会是错误(bug)。但运行时应该认为这是非法并抛出异常吗?在下面的代码示例中如果两个不同的线程同时调用同一个Counter 实例的Increment 方法将会发生什么?class Counter{private int _i;public int Increment(){lock (_i){return _i;}}}       当我们打算这样做的时候会发现这样一个意想不到的问题:C#编译器不允许lock关键字使值类型。不过我们已经熟知lock关键字的内部原理可以变通一下:class Counter{private int _i;public int Increment(){bool acquired false;try{Monitor.Enter(_i, ref acquired);return _i;}finally{if (acquired) Monitor.Exit(_i);}}}       这样一来程序就引入了一个错误(bug)。多个线程能够同时进入锁内修改_i,而且调 Monitor.Exit还会抛出异常.Monitor.Enter 方法接收的是System.Object类型的参数是一个引用而我们传递的是值类型(按值传递)。尽管此时(在需要引用的地方传递值)我们所传递的值并没有被更改但是传递给 Monitor.Enter 方法的值与传递给Monitor.Exit方法的值具有不同的标识。类似地在一个线程里传递给Monitor.Enter方法的值与另一个线程里传递给Monitor.Enter的值也具有不同的标识。如果我们在需要引用的地方(按值)传递值就不能获得正确的锁语义。       当方法返回引用类型时如果我们返回了一个值类型在语义上也不是非常合适。例如下面的代码:object GetInt() { int i  42;return i; } object obj GetInt();      GetInt方法按值返回一个值类型然而调用者期望方法返回的是引用类型。方法本可以返回在方法执行时存储i的栈位置但得到的将是到无效内存地址的引用因为方法的栈帧会在方法返回前清空。这说明默认情况下按值复制的值类型语义并不适合需要对象引用(指向托管堆)的地方。技术群添加小编微信并备注进群小编微信mm1552923   公众号dotNet编程大全
http://www.yutouwan.com/news/444368/

相关文章:

  • 微网站建设云帆网络微网站缺点
  • 网站设计模式4线城市搞网站开发
  • 深圳企业网站建设公司wordpress 开源app
  • 富阳网站建设洛洛科技网站开发设计软件
  • 域名的种类及查询网站南宁网站建设多少钱
  • 做网站服务器用谁的call_user_func_array() wordpress
  • 企业宣传网站在哪里做电商网站规划论文
  • 购物网站建设费用厦门市同安区建设局公开网站
  • 开源php网站开发wordpress 多域名301重定向代码
  • 网站大全免费入口有专门做面包的网站么
  • 我想做个百度网站怎么做的wordpress有没有linux
  • jsp网站开发实例教学网站开发与技术维护
  • wpf做的网站网站怎么添加手机版
  • 关于水果的网站开发天津建设协会网站
  • 网站seo合同图片制作器app
  • 网站建设与 维护实训报告范文wordpress视频弹幕
  • 晚上网站推广软件免费版饿了吗外卖网站怎么做
  • 宁波做网站制作自己做网站需要收费吗
  • 蓝天网站建设营销网站模版
  • 网站开发常用技术东莞最新防控通知
  • 网站建设功能说明书前程无忧网杭州网站建设类岗位
  • 香橼做空机构网站网站的广度
  • 产品型网站案例河南省的网页制作
  • 有企业邮箱案例的网站wordpress非插件幻灯
  • 洱源名师工作室网站建设招代理
  • 优化企业网站公司网站注销
  • 三网合一网站建设费用wordpress七牛加速
  • 网站视频下载软件如何建造网站
  • 创建一个网站的最常用的方法是先建立一个文件夹jsp网站怎么做
  • 在哪些网站上发外链好官网搭建 杭州