河南建设工程信息网官网首页搜索引擎优化seo信息

web/2025/10/2 13:49:37/文章来源:
河南建设工程信息网官网首页,搜索引擎优化seo信息,网站页面分析作业,成都机房托管前言#xff1a;因为平时挺少用到多线程的#xff0c;写游戏时都在用协程#xff0c;至于协程那是另一个话题了#xff0c;除了第一次学习多线程时和以前某个小项目有过就挺少有接触了#xff0c;最近准备面试又怕被问的深入#xff0c;所以就赶紧补补多线程基础。网上已…前言 因为平时挺少用到多线程的写游戏时都在用协程至于协程那是另一个话题了除了第一次学习多线程时和以前某个小项目有过就挺少有接触了最近准备面试又怕被问的深入所以就赶紧补补多线程基础。 网上已经有很多线程编程的学习笔记了那我为什么还要再整理一篇呢。因为我在搜索网上文章的时候发现一般别人整理的面试文章那很多语法都一笔带过了默认大家都懂学习文章又很少有给出经典的题目一般都是要几篇集合着一起看既然如此的话我为什么不自己整理出一份呢自己看的轻松说不定以后也有人喜欢这种风格能帮助到别人。所以这篇文章也会参考很多其他的文章最后都会写上引用的。 我写算法的时候也是很喜欢用C 来学习而且笔试的时候我或者很多公司也喜欢用C毕竟C 的控制台程序输入输出格式化做的也比较好那为什么这篇又用的是C#而不是C 呢因为最近实习只带着笔记本我的笔记本上只装了vscode用来写轻量级程序学习。C装的是MinGW来编译但是MinGW因为跨平台吧对std::thread支持的又不太好反正又不是不会用别的语言最重要的是学习的思想嘛。一、进程和线程有什么区别为什么要使用多线程 首先用最经典的一道面试题作为引入。 ①进程是资源分配的最小单位线程是CPU调度的最小单位。 ②一个线程只能属于一个进程而一个进程可以有多个线程。 ③进程在执行过程中拥有独立的内存单元而多个线程共享进程的内存。 ④进程间不会相互影响 线程一个线程挂掉将导致整个进程挂掉。 ⑤进程编程调试简单可靠性高但是创建销毁开销大线程正相反开销小切换速度快但是编程调试相对复杂。 ⑥部分任务可能比较耗时长时间占用CPU你肯定不希望应用执行某个功能时整个程序都卡死如果创建进程解决可能额外CPU开销更大因此部分时候需要使用多线程技术。 二、C# 中使用多线程 在 C# 中System.Threading.Thread 类用于线程的工作。它允许创建并访问多线程应用程序中的单个线程。进程中第一个被执行的线程称为主线程。 当 C# 程序开始执行时主线程自动创建使用 Thread 类创建的线程被主线程的子线程调用。 再介绍Thread类中比较有用的一个静态方法Sleep用于挂起可以看成暂停线程一段时间参数是毫秒。 下面来一个简单的例子看Thread的使用 using System; using System.Threading; namespace LeeCarry {public class Test{public static void Main(string[] args){Thread.Sleep(1000);//主线程暂停Thread nptnew Thread(NonParaThread);npt.Start();Thread wptnew Thread(WithParaThread);wpt.Start(我是带参数的线程。);}private static void NonParaThread(){Console.WriteLine(我是不带参数的线程。);Thread.Sleep(1000);//子线程暂停Console.WriteLine(我是不带参数的线程。);}private static void WithParaThread(Object obj){Console.WriteLine(obj.ToString());}} }执行该程序首先暂停1秒1000毫秒接着连续输出 我是不带参数的线程我是带参数的线程 然后再暂停1秒接着输出我是不带参数的线程 一开始是在主线程中挂起暂停的所以两个线程都要等1秒才执行后面是在不带参数的线程中挂起的不影响另一个线程所以带参数的线程就直接输出了。 但是要注意的是我这里是在Thread直接指定了方法但实际上该方法有委托类型 public delegate void ThreadStart()//用于无参数方法 public delegate void ParameterizedThreadStart(object obj) //用于有参数方法所以说刚刚的实例化可以展开成如下形式 Thread nptnew Thread(new ThreadStart(NonParaThread)); Thread wptnew Thread(new ParameterizedThreadStart(WithParaThread));这里的参数用的是object有可能会被问到一个问题就是拆箱装箱当然拆箱装箱和之前提的委托包括什么匿名函数、lambda之类的都是另一个话题了这里为了保持知识的独立性不过多的引入其他特性了只在必要的时候讲。   三、资源抢占与信号 上面的内容十分简单似乎跟普通的实例化类调用下函数没什么区别啊。 那我们再用一道面试题作为引入 两个线程交替打印0~100的奇偶 如果只用上面的知识写出下面的代码那运行一下就可以发现问题所在了。 using System; using System.Threading; namespace LeeCarry {public class Test{public static void Main(string[] args){Thread oddThreadnew Thread(OddThread);Thread evenThreadnew Thread(EvenThread);evenThread.Start(); oddThread.Start();}private static void EvenThread(){for(int i0;i100;i2){Console.WriteLine(线程1:{0},i);}}private static void OddThread(){for(int i1;i100;i2){Console.WriteLine(线程2:{0},i);}}} }结果 当然这个结果不一定是一样的毕竟是两个线程并发在跑但是却只有一个控制台啊当然往深一点说就是多个线程共享的资源。 就像十字路口如果不控制车辆开动的顺序仍由他们乱开会引发严重的后果一样实际上我们在编程中也经常会遇到控制线程顺序的需求。 那说到这其实也很好理解了就跟十字路口需要红绿灯一样我们也会用到信号灯的思想去控制线程的执行顺序。 在C#中有封装好类EventWaitHandle并不严谨下期说这期是为了方便理解概念有几个成员方法 WaitOne():如果是红灯的话会将线程暂停在当前位置。 Set():相当于开绿灯允许被暂停的线程通过开始执行下面的代码了 Reset():相当于开红灯线程遇到wait会暂停住。 EventWaitHandle必须指定一个枚举类型AutoReset或ManualResetManualReset很好理解就是手动开关红绿灯。而AutoReset是指在执行Set()后会马上自定执行一次Reset(),相当于只是把当前在红灯前的线程放行。 那么有了这些知识我们就可以开始写代码了 using System; using System.Threading; namespace LeeCarry {public class Test{public static EventWaitHandle oddFlagnew EventWaitHandle(false,EventResetMode.AutoReset);public static EventWaitHandle evenFlagnew EventWaitHandle(false,EventResetMode.AutoReset);public static void Main(string[] args){Thread oddThreadnew Thread(OddThread);Thread evenThreadnew Thread(EvenThread);evenThread.Start(); oddThread.Start();}private static void EvenThread(){for(int i0;i100;i2){Console.WriteLine(线程1:{0},i);oddFlag.Set();evenFlag.WaitOne();}oddFlag.Set();//最后开一次绿灯防止线程一直被阻塞也可以在waitone加时间参数}private static void OddThread(){oddFlag.WaitOne();//确保偶数线程先运行for(int i1;i100;i2){Console.WriteLine(线程2:{0},i);evenFlag.Set();oddFlag.WaitOne();}evenFlag.Set();//最后开一次绿灯防止线程一直被阻塞也可以在waitone加时间参数}} }当然这里写成开了两个flag完全是为了方便理解事实上可以只开一个叫flag然后把evenFlag和oddFlag都改成flag毕竟只有两个线程要么停要么走嘛。 最后我们似乎能把两个函数再合成成为一个函数但是这样的话单单一个信号灯似乎是没办法解决的了可以像上面用两个信号量或者下篇还有机会出来的话讲讲锁。 引用 .NET面试题解析(07)-多线程编程与线程同步-/梦里花落知多少/ Thread Class-MSDN C#多线程-菜鸟教程 EventWaitHandle Class-MSDN 多线程C#面试题-Ax0ne

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安阳网站设计多少钱哈尔滨建设工程信息网站

折半查找又为二分查找&#xff0c;对待查找的列表有两个要求&#xff1a;1.必须采用顺序存储结构。 2.必须按关键字大小顺序排列。 #include<stdio.h> #define Max 100 typedef struct {int key;int other; }RecordType; typedef struct {RecordType r[Max];int lenght; …

12333社保查询网官网南通网站排名优化

CCIE-LAB-第十五篇-IPV6-BGP+VPN6+RT 实际中,思科只会给你5个小时去做下面的全部配置 这个是CCIE-LAB的拓扑图 问题 翻译: 根据这些要求,将IPV6连接从总部通过SP扩展到laas站点上的giosk VRF。我在rll assign 2001:2710:311:2/64到r3 assign 2001:2710:311:1/64到gl2的RLI和…

dede网站版权信息wordpress 百度地图api插件

文章首发地址&#xff1a; 学一下 (suxueit.com)https://suxueit.com/article_detail/s9UMb44BWZdDRfKqFv22 先上一张&#xff0c;不知道是那个大佬画的图 简单描述一下流程 client-go封装部分 以pod为例 、先List所有的Pod资源&#xff0c;然后通过已经获取的pod资源的最大版…

最近网站不收录开外贸公司的流程及费用

摘要&#xff1a;对于一个大型网站来说&#xff0c;负载均衡是永恒的话题。随着硬件技术的迅猛发展&#xff0c;越来越多的负载均衡硬件设备涌现出来&#xff0c;如F5 BIG-IP、Citrix NetScaler、Radware等等&#xff0c;虽然可以解决问题&#xff0c;但其高昂的价格却往往令人…

怀化做网站如何利用某个软件做一个网站

在5G时代下&#xff0c;电子元器件电商平台的发展策略与应对措施需要考虑以下几个关键因素&#xff1a; 技术产品更新换代&#xff1a; 随着5G技术的普及和应用&#xff0c;电子元器件的需求将发生变化&#xff0c;对于支持5G技术的电子元器件的需求会增加&#xff0c;而对于旧…

商业网站建设者wordpress视频网站上传视频

《计算机与医学.ppt》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《计算机与医学.ppt(22页珍藏版)》请在人人文库网上搜索。1、计算机与医学,北京大学 信息科学技术学院 2008年9月,2/22,计算机在医学方面能做些什么&#xff1f;,在任何一门学科的研究和实践中&#…

北京网站关键词排名公司网页设计与制作教程读书心得

项目简介最近在一个客户现场搞熔边机项目&#xff0c;涉及到收放卷工艺的卷径计算&#xff0c;同时张力控制使用的是摆杆&#xff0c;然后通过PID控制输出辅助转速补偿收卷伺服速度。单一的PID参数不能自动适应卷径变化,如在小卷径200mm下调试整定出的一组PID参数&#xff0c;当…

甘肃金顶建设公司网站三亚房地产网站制作

连接oracle 数据库真麻烦&#xff0c;还是MySQL方便 Oracle Instant Client 这个东西的版本跟oracle的版本是有讲究的&#xff0c;引用文档的说明 Oracle 标准的客户端-服务器网络互操作性允许不同版本的 Oracle 客户端和 Oracle 数据库之间的连接。有关经过认证的配置&#…

杭州平台网站建设wordpress 错误500

一、背景 前段时间帮公司运维小姑娘调整她自己写的页面样式时发现她用了display: flex&#xff0c;我这个后端老古董还不太懂flex&#xff0c;自愧不如啊&#xff0c;所以写篇博客记录学习下。 现在写的前端页面还停留在依赖 display 属性 position属性 float属性的布局方式&…

网站开发调研做网站配什么绿色好看些

肯定有用&#xff0c;练习就是实战。对于刚学习编程的同学&#xff0c;我觉得跟着例子学习&#xff0c;会有很大的进步。至少让你熟悉语法和理解编程的一些技巧。当你能熟练掌握python编程的方法后&#xff0c;你需要学习一些第三方库&#xff0c;python的第三方库很强大。具体…

遵义新蓝外国语学校网站建设网站项目怎么做

独享带宽 独享带宽针对对带宽有较高的要求&#xff0c;其业务的内容和性质决定只有使用独立的带宽资源才能满足品质的需求&#xff0c;而这种只给单独客户使用的带宽资源称为独享带宽. 使用独享带宽&#xff0c;整个带宽资源归属于一个客户 独享带宽的优点是可自由使用带宽量…

网站关停公告怎么做科技公司简介范文

【README】 本文总结了操作系统 对磁盘的4层抽象&#xff0c;并给出了详细介绍的post 链接&#xff1b; 【1】对磁盘的4层抽象 【1.1】对磁盘的第1层抽象 通过盘块号读写磁盘&#xff08;读写多个扇区&#xff09;&#xff1b; 因为磁盘底层操作的单位是扇区&#xff08;51…

医疗网站网站建网站建设网页

AlertDialog.Builder使用AlertController.AlertParams构建对话框.我检查了AlertDialog.Builder #create()调用AlertController.AlertParams #application()如果设置了项目,则创建ListView并分配适配器(AlertParams#createListView()).我基于createListView源创建了自定义适配器…

百度如何网站wordpress上传的地址加

写在前面的话 当我们提到人工智能时也就是AI的时候呢&#xff0c;我们大多数人首先想到的可能就是像chatGPT这样的聊天机器人&#xff0c;这些聊天机器人通过理解&#xff0c;还有生成自然语言可以给我们提供一些信息&#xff0c;这个是AI最终的形态吗或者AI最终的形式吗&…

陕西高速公路建设集团公司网站深圳室内设计公司50强

引用配置属性或引用生成文件的属性或引用随机值 ★ 使用占位符引用其他配置属性&#xff1a; 配置文件中可用${}占位符引用已有的属性&#xff0c;被引用的属性可以是&#xff1a; - 已定义的属性。 - 来自其他配置源&#xff08;比如命令行的选项参数、环境变量、系统属性等…

做营销型网站 推广的好处免费行情软件app网站mnw直

程序示例精选 PythonYolov5Qt交通标志特征识别窗体界面相片视频摄像头 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonYolov5Qt交通标志特征识别窗体界面相片视频摄像头》编写代码&a…

深圳做网站在去那备案最好用的搜索神器

海贼王为什么画风突变最近&#xff0c;我再三提到突变测试一词。 因为可以说这种方法能够以超出代码覆盖范围的方式检测测试安全网的空白&#xff0c;所以我花了一些时间来追赶这个话题并尝试一下。 这篇文章总结了我的发现&#xff0c;作为对该主题的快速介绍。 什么是变异测…

网站漂浮广告互联网品牌宣传推广服务公司

Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML。然而在一些场景中&#xff0c;你真的需要 JavaScript 的完全编程的能力&#xff0c;这时你可以用 render 函数&#xff0c;它比 template 更接近编译器。 我这里&#xff0c;举一个简单的例子。在iviews中使用自定义D…

网站项目设计与制作综合实训wordpress适合门户网站吗

文章目录 题意思路代码 题意 题目链接 可以翻转任意列&#xff0c;求全是1和全是0的行&#xff0c;最多有多少行。 思路 对一行而言&#xff0c;能翻转成相同的&#xff08;同为1&#xff0c;或者同为0&#xff09;&#xff0c;则相等。能反转成相反的&#xff0c;则巧好&am…

北京住总第一开发建设有限公司网站找个免费网站这么难吗

1. 正则表达式概述 在编写处理字符串的程序或网页时&#xff0c;经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说&#xff0c;正则表达式就是记录文本规则的代码。 正则表达式&#xff0c;又称正规表示法、常规表示法&#xff…