雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2014年3月8日

摘要: 在消费者模型里面,有两个主意点: 1、对于当前消费次数的修改访问需要线程互斥,所以用关键段(也可以是互斥量)进行互斥。 2、需要两个信号量(当然也可以是事件),一个表示缓冲区为空,一个表示缓冲区不为空,用于进程间的同步。 还有一点:注意主线程的结束会导致子线程的结束!!!这里一开始一直没搞清楚,后来才发现在将主线程暂停! #include#include#includevolatile long g_nLoginCount;const int THREAD_NUM = 10;volatile long g_num;CRITICAL_SECTION g_thread;HANDLE... 阅读全文

posted @ 2014-03-08 22:54 huhuuu 阅读(185) 评论(0) 推荐(0) 编辑

摘要: 形象的理解:关键段与互斥量都有“线程所有权”概念,可以将“线程所有权”理解成旅馆的房卡,在旅馆前台登记名字拥有房卡后是可以多次进出房间的,其它人则无法进入直到你交出房卡。每个线程必须先通过EnterCriticalSection或WaitForSingleObject来尝试获得“线程所有权”才能调用LeaveCriticalSection或ReleaseMutex。否则会调用失败,这就相当于伪造房卡去办理退房手续——由于登记本上没有你的名字所以会被拒绝。互斥量能很好的处理“遗弃”情况,因此在多进程之间可以放心的使用。事件与信号量相当于管停车位的,信号量的大小相当于停车位容量多大,比如一共有5个 阅读全文

posted @ 2014-03-08 19:34 huhuuu 阅读(2477) 评论(0) 推荐(0) 编辑

摘要: 以一个停车场的运作为例。简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆直接进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门人得知后,打开车拦,放入外面的一辆进去,如果又离开两辆,则又可以放入两辆,如此往复。在这个停车场系统中,车位是公共资源,每辆车好比一个线程,看门人起的就是信号量的作用。抽象的来讲,信号量的特性如下:信号量是一个非负整数(车位数),所有通过它的线程/进程(车辆)都会将该整数减一(通过它当然是为了使用资源),当该整数值为零时,所有试图通过它的线程都将处于等待状.. 阅读全文

posted @ 2014-03-08 15:59 huhuuu 阅读(5288) 评论(0) 推荐(1) 编辑

摘要: 互斥量的用途和临界区很像。它与临界区的差别在于可以跨线程使用,可以用来互斥进行多个线程间的数据访问,但是是以牺牲速度为代价的。只有临界区是非核心对象,那么互斥量就是一个核心对象了。核心对象的特点是有所谓的引用计数。所著一个未被拥有的互斥量,比锁住一个未被拥有的临界区需要花费几乎100倍的时间(数据引用自《Visual C++ 6.0编程学习捷径》)。#include#include#includevolatile long g_nLoginCount;const int THREAD_NUM = 10;volatile long g_num;CRITICAL_SECTION g_thr... 阅读全文

posted @ 2014-03-08 14:56 huhuuu 阅读(500) 评论(0) 推荐(0) 编辑

摘要: 一到实习校招的时间,大伙儿开始准备笔试面试,还有人搜相应公司的面经,看啥啥所谓的面试宝典。 本人也是俗人一枚,看到大伙儿这么干,自己又有什么不干的理由呢? 尤其是面经,常常感觉面试官问的问题其实也不难啊,如果那个人这样回答可以进公司,自己也可以的,在看看google,facebook的问题,貌似也不是很难,然后又感觉自己飘飘然,实力已经差不多了。 然后也参见实战了,面试去了,才发现面经中出现的只是基础题,然而面试官更希望的是看到你做什么项目,特别是有什么比较有技术含量的项目。可以说面经中呈现的只是冰山一角,你只看到了面试官问的一些基础题,殊不知最后成功的应聘者本身做了多少牛逼的项目,... 阅读全文

posted @ 2014-03-08 12:54 huhuuu 阅读(1181) 评论(2) 推荐(0) 编辑