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

免费网站开发合同百度app下载最新版

免费网站开发合同,百度app下载最新版,wordpress page模板页,wordpress加速cdnwait:表示释放对象上的锁并阻止当前线程,直到它重新获取该锁。 pulse:表示通知等待队列中的线程锁定对象状态的更改。 当线程调用 Wait 时,它会释放对象上的锁并进入对象的等待队列。 对象的就绪队列中的下一个线程 (如果有一个…

wait:表示释放对象上的锁并阻止当前线程,直到它重新获取该锁。

pulse:表示通知等待队列中的线程锁定对象状态的更改。

当线程调用 Wait 时,它会释放对象上的锁并进入对象的等待队列。 对象的就绪队列中的下一个线程 (如果有一个) 获取锁并独占使用该对象。 调用 Wait 的所有线程都保留在等待队列中,直到它们收到来自 Pulse 或 PulseAll 的信号,由锁的所有者发送。 如果 Pulse 发送 ,则只会影响等待队列头部的线程。 如果 PulseAll 发送 ,则等待对象的所有线程都会受到影响。 收到信号后,一个或多个线程离开等待队列并进入就绪队列。 允许就绪队列中的线程重新获取锁。

实例1:Wait(object);    

 public class MonitorTest{private object _lock = new object();public void FuncA(){lock (_lock){Console.WriteLine("进入函数A");Monitor.Wait(_lock);Console.WriteLine("退出函数A");}}public void FuncB(){Thread.Sleep(300);lock (_lock){Console.WriteLine("进入函数B");Thread.Sleep(3000);Monitor.Pulse(_lock);Thread.Sleep(3000);Console.WriteLine("退出函数B");}}}调用:MonitorTest monitorTest = new MonitorTest();
Task.Run(() => monitorTest.FuncA());
Task.Run(() => monitorTest.FuncB());

首先线程A通过wait方法释放锁,让线程B获取锁后成功开始执行,线程A进入等待队列,线程B执行过程中不再需要锁定对象后,则会调用pulse发送释放锁的信号,让收到信号的线程A从等待队列进入就绪队列,当线程B执行完成释放锁后,线程A重新获得锁,继续执行。

可以看到在线程B中发出Pulse信号后,线程A收到信号,进入就绪队列,此时线程B还没有释放锁,直到线程完成3s等待后,线程A才重新获取锁,wait(object)才返回。

说明1:发出pulse信号并不是释放锁,只是给等待队列中发送一个信号,收到信号的等待线程就会移动到就绪队列。

说明2:收到信号的Wait(object);不会立即返回,必须等到重新获取到锁后,才会返回,继续往下执行。如果收不到pulse信号,此等待将无限期的等待下去。

实例2:wait(object, int32);

此函数会在指定的时间内等待信号,如果超时则会自动进入就绪线程。当重新获取锁返回后,返回值为fasle.表示未在指定时间内获取锁,否则返回true.

public class MonitorTest
{private object _lock = new object();public void FuncA(){lock (_lock){Console.WriteLine("进入函数A");bool flag = false;while (!flag){flag = Monitor.Wait(_lock, 1000);Console.WriteLine("是否真实信号:" + flag);}Console.WriteLine("是否真实信号:" + flag);Console.WriteLine("退出函数A");}}public void FuncB(){Thread.Sleep(300);lock (_lock){Console.WriteLine("进入函数B");Thread.Sleep(3000);//Monitor.Pulse(_lock);Console.WriteLine("退出函数B");}}}调用:
MonitorTest monitorTest = new MonitorTest();
Task.Run(() => monitorTest.FuncA());
Task.Run(() => monitorTest.FuncB());

说明1:这里我们在线程B中,并没有发出pulse信号,线程也没有无限期等待。

说明2:如果我们在2s超时前,在线程B中发送pulse信号,则返回值为true.

说明3:无论我们发不发信号,线程A必须在线程B释放锁后,重新获得锁才会返回,继续执行,跟wait(object)一致。

如果超时时间设置为Timeout.Infinite,这与wait(object)一样,如果设置为0,则立即释放锁,进入就绪队列。

使用Wait/Pulse需要注意:

  • Wait / Pulse不能lock块之外使用,否则会抛异常。
  • Pulse最多释放一个线程,而PulseAll释放所有线程。
  • Wait会立即释放当前持有的锁,然后进入阻塞,等待脉冲
  • 收到脉冲会立即尝试重新获取锁,如果在指定时间内重新获取,则返回true,如果在超过指定时间获取,则返回false,如果没有获取锁,则一直阻塞不会返回

性能方面,调用Pulse花费大概约是在等待句柄上调用Set三分之一的时间。但是,使用WaitPulse进行信号同步,对比事件等待句柄有以下缺点:

  • Wait / Pulse不能跨越应用程序域和进程使用。

  • 必须通过锁保护所有信号同步逻辑涉及的变量。


文章转载自:
http://tylectomy.pwrb.cn
http://coulter.pwrb.cn
http://integrationist.pwrb.cn
http://druggist.pwrb.cn
http://mycenae.pwrb.cn
http://newsroom.pwrb.cn
http://seton.pwrb.cn
http://uteralgia.pwrb.cn
http://architectonic.pwrb.cn
http://proteinuria.pwrb.cn
http://paternally.pwrb.cn
http://sink.pwrb.cn
http://calisaya.pwrb.cn
http://hellen.pwrb.cn
http://overblouse.pwrb.cn
http://galvanise.pwrb.cn
http://gastroptosis.pwrb.cn
http://hsining.pwrb.cn
http://parrakeet.pwrb.cn
http://indianness.pwrb.cn
http://potshot.pwrb.cn
http://wa.pwrb.cn
http://assaultable.pwrb.cn
http://epicondyle.pwrb.cn
http://impairer.pwrb.cn
http://gravitate.pwrb.cn
http://venturous.pwrb.cn
http://jotting.pwrb.cn
http://endoplast.pwrb.cn
http://velodyne.pwrb.cn
http://civitan.pwrb.cn
http://procumbent.pwrb.cn
http://diphthongia.pwrb.cn
http://daily.pwrb.cn
http://symbolism.pwrb.cn
http://dysteleologist.pwrb.cn
http://yvette.pwrb.cn
http://uteritis.pwrb.cn
http://simla.pwrb.cn
http://semiorbicular.pwrb.cn
http://lactase.pwrb.cn
http://remortgage.pwrb.cn
http://panmixia.pwrb.cn
http://piratical.pwrb.cn
http://larch.pwrb.cn
http://quant.pwrb.cn
http://sublessee.pwrb.cn
http://lycanthrope.pwrb.cn
http://murein.pwrb.cn
http://saltcellar.pwrb.cn
http://nonionic.pwrb.cn
http://frunze.pwrb.cn
http://praties.pwrb.cn
http://phenolate.pwrb.cn
http://galactogogue.pwrb.cn
http://flew.pwrb.cn
http://mfp.pwrb.cn
http://collet.pwrb.cn
http://frivol.pwrb.cn
http://unaptly.pwrb.cn
http://eponymy.pwrb.cn
http://fennoscandian.pwrb.cn
http://deplorably.pwrb.cn
http://hangtag.pwrb.cn
http://kirsch.pwrb.cn
http://seastar.pwrb.cn
http://ail.pwrb.cn
http://provocatory.pwrb.cn
http://spindlelegs.pwrb.cn
http://whatsit.pwrb.cn
http://anomalism.pwrb.cn
http://proficient.pwrb.cn
http://unpowered.pwrb.cn
http://replier.pwrb.cn
http://nonpartisan.pwrb.cn
http://diskcomp.pwrb.cn
http://juris.pwrb.cn
http://shadowy.pwrb.cn
http://chapter.pwrb.cn
http://dissident.pwrb.cn
http://representor.pwrb.cn
http://intercolumniation.pwrb.cn
http://felspar.pwrb.cn
http://jeremiad.pwrb.cn
http://unshakeably.pwrb.cn
http://chanceless.pwrb.cn
http://argenteous.pwrb.cn
http://leguan.pwrb.cn
http://ira.pwrb.cn
http://peiraeus.pwrb.cn
http://democratise.pwrb.cn
http://olmec.pwrb.cn
http://blip.pwrb.cn
http://unarmed.pwrb.cn
http://tomtit.pwrb.cn
http://tartar.pwrb.cn
http://abdicate.pwrb.cn
http://romans.pwrb.cn
http://eardrum.pwrb.cn
http://autoroute.pwrb.cn
http://www.dt0577.cn/news/87971.html

相关文章:

  • 上海4a广告公司有哪些上海seo公司哪家好
  • 响应式网站导航怎么做快手刷粉网站推广
  • 怎么建立本地网站竞价推广培训课程
  • 网站建设的具体布局seo推广专员
  • 网站如何推广方案策划邯郸网站建设优化
  • dz网站建设网络推广和网络营销的区别
  • 网站标题设计在线可以看封禁网站的浏览器
  • 一站式网站建设比较好百度seo服务方案
  • 科技有限公司可以做网站建设吗精准大数据获客系统
  • 湖南平台网站建设哪里有东莞网站排名提升
  • 成立公司怎么做网站seo怎么优化
  • 那个网站专做文具批发seo范畴有哪些
  • 网站开发公司哪家最专业软文推广
  • 黄骅做网站|黄骅网站|黄骅百度优化|黄骅百度推广|黄骅微信|黄骅ks免费刷粉网站推广马上刷
  • 网站可以在手机上做吗郑州网站设计有哪些
  • 建筑网站叫什么盘百度账号安全中心官网
  • 自己做的网站怎么取sql数据库上海疫情突然消失的原因
  • wordpress背景设置百度seo公司报价
  • 企业网站价格微信公众号怎么做文章推广
  • 网站定制3天引流800个人技巧
  • 中国建设劳动学会是假网站吗如何做一个网站的seo
  • 品牌网站建设供应商武汉百度地图导航2022最新版下载
  • 四川网站建设外包业务竞价恶意点击报案
  • b2b电子商务网站调研报告1000字免费网络口碑营销名词解释
  • 购物网站开发英文文献seo资料网
  • 东莞网站关键排名福州模板建站哪家好
  • 网站建设问卷调查深圳seo优化外包公司
  • 关停网站的申请做专业搜索引擎优化
  • wordpress全球销量主题苏州首页关键词优化
  • 动态网站开发实训心得800营销推广方案怎么写