让那些做面试官的屌丝lead不再抖脚系列(一)---同步异步探讨->进程和线程

  面对现在越来越多的面试官的浓郁的乡土气息,以及一些欠缺的弱点会被面试官抓着不放的现实,当然还为了不让面试官在你不停思考过程中拼命抖脚,我们值得对一些目前版本的.net中常见面试讨论点以及常用的看上去能把代码变的很高端的问题罗列出来一起讨论讨论~

                                                            ————写在前面的废话

第一章我们来探讨下同步异步以及一些相关的东西


1. 进程和线程的差别

   一个进程肚子里可以有多个线程,这是简单的包含关系,这是最简单的差别,接下来就是:

  -> 每个进程都是独占一块内存的,而多个线程是共享一块内存,也就是说系统并没有给线程分配自己的内存,他拥有的只是极小的单位,比如栈,寄存器

     也就是说,一个进程炸了,不会造成别的进程有问题,就像任务管理器中展开的那些,no reponding的进程不会影响系统运行;但是一个线程出现锁死什么的时候会造成这一整个进程(应用程序)炸掉,就是导致了无法响应的问题,所以简单来说就是一个线程炸,整块一起炸,而一个进程炸了,邻居没任何影响。

  ->多进程应用比多线程应用来的强大,因为他不会因为某条路炸了而整体崩溃,但是反过来说,多线程应用所占资源比多进程来的小,进程间切换需要大量资源损耗,对于并发性任务,我们通常选用多线程模式。

  ->进程通过CLR进行托管


    .net中,我们通过System.Diagnostics.Process类来进行进程调用管理,当然除了在Process类中进行进程管理外,我们还可以通过System.Environment类中的Exit(xx)方法直接杀死进程。

     不过在很多情况下,我们并不会对进程有太多的扩展以及开发,毕竟我们无法去某个进程内部干些坏事,这就相当于你通过编程实现将qq的提示颜色变为黑色之类的,进程被framework封装,所以我们无法去知道里面有些神马。


2. 线程以及其扩展

     首先我们需要知道一个线程里有些什么:

一个线程包含以下内容。

  • 一个指向当前被执行指令的指令指针;
  • 一个栈;
  • 一个寄存器值的集合,定义了一部分描述正在执行线程的处理器状态的值;
  • 一个私有的数据区。
   当然上面是从别的地方找来的资源,这些也就是系统给每个线程分配的资源了,真的不能再多了。

   接下来讲个有趣的内容,多线程到底是什么,真的是老板说一句话,然后5个员工一起开始干自己的事,然后提高了效率么?

  其实并非这样,.net中有个叫抢占式多任务管理的机制,调度器作为Windows内核的一部分,将时间切片,分成一段段的时间片。这些时间间隔以毫秒为精度且长度并不固定。针对每个处理器,每个时间片仅服务于单独一个线程。线程的迅速执行给我们造成了它们在同时运行的假象。我们在两个时间片的间隔中进行上下文切换。该方法的优点在于,那些正在等待某些Windows资源的线程将不会浪费时间片,直到资源有效为止。怎么理解呢?我们用一个简单的东西来解释下:

线程1:1   1 1 1  1 1  1

线程2:1 1 1 1  1 1 11

线程3: 1       1

我们把所有的1全连接起来,你会发现是条直线,其实对于系统来说,他就是111111111111111111111111,这样,但是由于时间片的分布关系,这3个线程执行时候看起来是3个线程,其实在每个时间点,只有一个1在被执行,也就是说到底,一切都是同步的,同步才是大哥。所以这种机制的缺点也很明显了,他必须通过同步的方式来保护资源,不被别人访问。


进程与线程的基本就到这里了,其实都是很好理解的东西,有些太细的我并不觉得我会去了解,毕竟你在战场上拿刀砍人的时候,不会去考虑刀是用什么做的,里面结构是怎么样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以。以下是一份Java版本的《屌丝逆袭记》策划案: 一、游戏概述 《屌丝逆袭记》是一款以逆袭为主题的Java游戏。玩家将扮演一个屌丝角色,通过挑战各种任务和关卡,逐渐提升自己的能力,成为一名成功人士。游戏采用2D横版的画面风格,操作简单易上手,适合各种年龄段的玩家。 二、游戏玩法 1.人物设置 玩家可以选择男女角色,并自定义角色的外观和属性。角色属性包括力量、敏捷、智力和生命值等,不同属性会对游戏过程产生不同的影响。 2.关卡设置 游戏分为多个关卡,每个关卡有不同的任务和挑战。玩家需要通过关卡,完成任务,获得金币和经验值,提升自己的能力。随着关卡的逐渐升级,任务和挑战也会变得越来越难。 3.装备系统 游戏中设置不同等级的装备,玩家可以通过购买或任务奖励获得装备,提升自己的属性和能力。不同的装备有不同的属性加成,玩家需要根据自己的需求和游戏情况选择合适的装备。 4.商城系统 游戏中设置商城,玩家可以通过金币或充值购买各种道具和装备。商城中的物品种类繁多,包括装备、技能书、药品等,可以帮助玩家在游戏中更好地完成任务和挑战。 5.技能系统 游戏中设置各种技能,玩家可以通过任务奖励或商城购买技能书,提升自己的技能等级。不同的技能有不同的效果,可以帮助玩家在游戏中更好地应对不同的挑战和任务。 6.成就系统 游戏中设置成就系统,玩家可以通过完成特定的任务和挑战获得成就称号和奖励。成就系统不仅可以帮助玩家提升自己的游戏体验,还可以增加游戏的乐趣和挑战性。 三、游戏特点 1.简单易上手,适合各种年龄段的玩家; 2.丰富的角色和装备系统,可以让玩家自由选择和定制自己的角色; 3.多样化的任务和挑战,可以让玩家在游戏中不断挑战自我,提高自己的能力; 4.成就系统和商城系统,可以让玩家获得更多的奖励和乐趣; 5.游戏采用Java语言编写,具有良好的稳定性和可移植性。 四、游戏技术实现 1.游戏采用Java语言编写,使用Eclipse或IntelliJ IDEA等开发工具; 2.游戏采用Java2D图形库实现2D横版画面风格; 3.游戏采用MySQL数据库存储玩家数据; 4.游戏采用Java Socket实现多人联机模式; 5.游戏采用Java Swing实现用户界面和控件。 以上是一份Java版本的《屌丝逆袭记》策划案,希望能够对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值