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

网站建设公司网站定制开发网站设计与建设实验报告

网站建设公司网站定制开发,网站设计与建设实验报告,用网站做CAN总线通信好吗,美食网站建设页面要求信号量(Semaphore)#xff0c;有时被称为信号灯#xff0c;是在多线程环境下使用的一种设施#xff0c;是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前#xff0c;线程必须获取一个信号量。一旦该关键代码段完成了#xff0c;那么该线程必须释…信号量(Semaphore)有时被称为信号灯是在多线程环境下使用的一种设施是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前线程必须获取一个信号量。一旦该关键代码段完成了那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。以下主要介绍C#中Semaphore 和 CountdownEvent 的使用。 1、Semaphore 和 CountdownEvent的使用 1Semaphore Semaphore 限制可同时访问某一资源或资源池的线程数。.NET中的信号量Semaphore是操作系统维持的一个整数。当整数位0时。其他线程无法进入。当整数大于0时线程可以进入。每当一个线程进入整数-1线程退出后整数1。整数不能超过信号量的最大请求数。信号量在初始化的时候可以指定这个整数的初始值。System.Threading.Semaphore类的构造函数的两个参数第一个就是信号量的内部整数初始值也就是初始请求数第二个参数就是最大请求数。 2CountdownEvent System.Threading.CountdownEvent 是在收到信号特定次数后取消阻止等待线程的同步基元。 CountdownEvent 适用于以下情况不得不先使用 ManualResetEvent 或 ManualResetEventSlim 并手动递减变量然后再向事件发出信号。 CountdownEvent 表示在计数变为0时处于有信号状态的同步基元通过信号机制CountdownEvent当有新的需要同步的任务产生时就调用AddCount增加它的计数当有任务到达同步点是就调用Signal函数减小它的计数当CountdownEvent的计数为零时就表示所有需要同步的任务已经完成。CountDownEvent与Barrier相似所不同的是CountDownEvent调用成员函数Wait()将阻塞直至成员函数Signal() 被调用达特定的次数这时CountDownEvent称作就绪态对于处于就绪态的CountDownEvent调用Wait()函数将不会再阻塞只有手动调用Reset()函数后调用Wait()函数将再次阻塞。CountDownEvent可以通过TryAddCount()和AddCount()函数来增加函数Signal() 需被调用的次数但只有当CountDownEvent处于未就绪态时才会成功。否则根据调用函数的不同将有可能抛出异常。 2、Semaphore的使用 .NET中的信号量Semaphore是操作系统维持的一个整数。当整数位0时。其他线程无法进入。当整数大于0时线程可以进入。每当一个线程进入整数-1线程退出后整数1。整数不能超过信号量的最大请求数。信号量在初始化的时候可以指定这个整数的初始值。System.Threading.Semaphore类的构造函数的两个参数第一个就是信号量的内部整数初始值也就是初始请求数第二个参数就是最大请求数。 using System; using System.Threading; namespace ConsoleApplication {class Program{// 一个模拟有限资源池的信号量。//private static Semaphore _pool;// 填充Thread.Sleep()间隔使输出更有序。private static int _padding;public static void Main(){//创建一个信号量这个信号量最多可以满足三个信号量//并发请求。初始计数为0//整个信号量计数是初始的//主程序线程拥有。//_pool new Semaphore(0, 3);// 创建并启动五个线程。//for (int i 1; i 5; i){Thread t new Thread(new ParameterizedThreadStart(Worker));// 启动线程传递编号。t.Start(i);}//等待半秒钟让所有的线程启动和阻塞信号量。Thread.Sleep(500);//主线程开始持有整个信号量计数。// 调用Release(3)带来返回信号量的最大值允许等待的线程进入信号量一次最多3个。Console.WriteLine(主线程调用 Release(3));_pool.Release(3);Console.WriteLine(主线程退出);Console.ReadKey();}private static void Worker(object num){//每个工作线程开始请求信号量Console.WriteLine(Thread {0} 开始 等待信号量, num);_pool.WaitOne();// 填充Thread.Sleep()间隔使输出更有序。int padding Interlocked.Add(ref _padding, 100);Console.WriteLine(Thread {0} 进入信号量, num);Thread.Sleep(1000 padding);Console.WriteLine(Thread {0} releases the semaphore., num);Console.WriteLine(Thread {0} 之前的信号量计数: {1},num, _pool.Release());}}} 3、CountdownEvent的使用 CountDownEvent调用成员函数Wait()将阻塞直至成员函数Signal()被调用达特定的次数这时CountDownEvent称作就绪态对于处于就绪态的CountDownEvent调用Wait()函数将不会再阻塞只有手动调用Reset()函数后调用Wait()函数将再次阻塞。CountDownEvent可以通过TryAddCount()和AddCount()函数来增加函数Signal()需被调用的次数但只有当CountDownEvent处于未就绪态时才会成功。否则根据调用函数的不同将有可能抛出异常。 例如 using System; using System.Threading; using System.Threading.Tasks;namespace ConsoleApplication {class Program{static CountdownEvent _count new CountdownEvent(3);static void Main(string[] args){Task.Factory.StartNew(() {Thread.Sleep(500);Console.WriteLine(thread 1 complete);_count.Signal();});Task.Factory.StartNew(() {Thread.Sleep(1000);Console.WriteLine(thread 2 complete);_count.Signal();});Task.Factory.StartNew(() {Thread.Sleep(2000);Console.WriteLine(thread 3 complete);_count.Signal();});//_count.AddCount();//调用AddCount增加计数Console.WriteLine(waiting tasks....);_count.Wait();Console.WriteLine(all task completed);Console.ReadKey();}} }
http://www.hkea.cn/news/14361911/

相关文章:

  • 一个seo良好的网站其主要流量往往来自做旅游项目用哪家网站好
  • 网站怎么做视频背景一个网站如何做桌面快捷链接
  • 怎么建设QQ网站没有公司做网站犯法吗
  • 昆明网站建设 网络服务怎么做网站从0做到权重7
  • 什么网站做设计可以赚钱望野
  • 建设银行手机银行官方网站下载高度重视部门网站建设
  • 百度教育网站临海网站建设
  • 网站开发开源框架动漫网站建站
  • 东营 网站建设建设房地产网站
  • 在手机制作网站网络维护简历模板
  • 岱山建设局网站wordpress 共享
  • 网站建设收费标准教程静态网页怎么做网站
  • 网站建设个人工作总结三网合一 营销型网站
  • 建设网站都要学些什么品牌公关活动
  • 用dw做网站用什么主题比较好大连工程信息招标网
  • 用js做自适应网站视频剪辑培训
  • 丽江市住房与城乡建设局网站郑州建筑公司排名
  • idc销售网站php源代码关注公众号在哪里查找
  • 承德建设厅网站网站后台更新内容后
  • 网站正在建设中提示页商城建设公司
  • 用asp.net做简易网站wordpress腾讯云cos插件
  • 网站开发如何学习医疗器械管理软件
  • 简单手机网站源码下载宁波网站建设 华企立方
  • 备案的域名做电影网站吗搜讯网站开发
  • 个人成立公司怎么做企业网站公司的网站建设费用入什么科目
  • 石家庄设计网站公司安徽网站线上开发公司
  • 创新的企业网站制作网络营销推广网站
  • canvas做的手机网站做淘宝需要的网站
  • php网站建设外国参考文献昆明app制作的公司
  • python做互金网站制作网页的基本步骤