zoukankan      html  css  js  c++  java
  • 《那些年啊,那些事——一个程序员的奋斗史》——41

       将播放的核心封装为CMedia后,剩下的事情便是逻辑层了。对于写过UI程序,并且之前还做了点小程序的段伏枥来说,这并不是什么很难的事情。唯一的难点在于,播放的时候该如何显示滚动条以及时间。其实CMedia封装了获取当前时间的接口,当然也有获取整个长度的,根据两者的比例可以算出来滑动块的位置。至于时间的显示,只要转换一下,也根本不在话下。只是如何应该在哪里获取呢?主线程肯定是不行的,因为它只能被消息循环占据。所以,唯一的选择只能是多线程,而这便是段伏枥多线程旅程的开始。
       
       如何开始多线程,也是有章可循,在《Windows CE程序设计》就有相关的章节,只需要调用相应的函数即可。是不是非常简单?段伏枥也是这么想的。不就是在线程函数中获取时间,并做显示吗?有什么难度啊?相较之以前的菜鸟阶段,段伏枥整这音乐播放器的逻辑层速度也就快多了,一个星期左右,就将整个程序给完成了。看着自己亲手完成的音乐播放器,虽然比不上千千静听啊之类,但也让自己兴奋了好一阵。可在实际的测试中,段伏枥却发现了个致命的问题:在切换下一曲的时候,偶尔会崩溃!
       
       怎么回事,段伏枥这下可头大了。仔细查看了下代码,也找不出蛛丝马迹。索性将刷新线程给屏蔽掉吧!没想到,这么一来,一切正常!原来问题是出在多线程上!可这线程会有什么问题呢?咋看都不像有病的样子。段伏枥为此而苦恼了好几天。万事总有其原因乃至解决之道,有一天段伏枥不经意间看到一篇帖子,提到多线程可能会有资源占用的问题。不过这文章全是英文的,自己也没有仔仔细细全部看完,但毕竟给予了灵感。而顺着这灵光一闪,段伏枥找到了问题关键所在:在停止播放到开始播放另一个文件的这个间隔中,如果继续获取当前时间,那么程序将会崩溃!因为那时候实例已经释放,直接是使用空指针来提领,能不出错吗?
       
       找到问题的根源所在,似乎解决问题的方法也不难:不就是因为不知道当前的播放状态而导致的吗?自己增添一个变量,分别标示播放完毕以及播放开始,然后在线程中进行判断,这不就好了嘛?不能不说,这是一个非常正确的解决方式,但却并不彻底。崩溃的几率减少了,但却没有完全杜绝,偶尔的偶尔还是会崩溃。这究竟是怎么回事呢?不是已经设置标志了吗?为什么还会这样呢?这问题肯定还是因为多线程,可是根源在哪里?
       
       不得已,段伏枥只好硬着头皮将那篇英文文章看完。噢,原来如此!问题很可能在于,子线程在判断状态之后,然后开始获取当前时间的这个间隔呢,可能主线程已经将当前的实例给释放了!为了避免这情况的发生,只需要加上临界区即可。这么简单的问题,却让自己想了那么多天;而更为让自己汗颜的是,这种可能性在文章中已经明明白白写了出来,仅仅是因为自己的懒惰以及怕麻烦,只是匆匆看一眼,才引发了后续时间的浪费。果然,做技术的,没有那么多模棱两可,浅尝辄止永远只能有数不尽的麻烦。
       
       当将临界区这一利器添加到代码之后,段伏枥长长地舒了一口气:程序再也不见崩溃了。
       
       相对于段伏枥来说,沈俊就比较凄凉了。对于之前只接受过所谓的高等教育的大学生来说,普遍的动手能力和专业知识水平如何,想必地球人都知道。而沈俊偏偏也不是个例外,也是这普遍中的一员,也就是说,对于硬件设计,她也是一窍不通。只不过,对于软件来说,只要你选择了一个方向,那么很容易就能找到相关的入门资料,即使是入门的书籍也是片地开花。可是对于硬件呢?那就没那么幸运了?有谁见过手把手教的入门书籍的?公司里面唯一和硬件有点沾上边的,只有黄华中,想他给沈俊讲课?那是做梦!估计即使真想讲,也说不出个所以然来,毕竟水平在那摆着。黄华中所做的,便只是将机器的原理图扔给沈俊,然后丢下一句话:“你自己看看原理图,用心点,好好学学!”
       
       毫无经验的沈俊看着这原理图,连哭的心都有了:这些是什么啊?为什么要这么连接啊?而这大大的一颗芯片,究竟是做什么用的?段伏枥唯一能帮的,便是告诉她,可以在www.alldatasheet.com网站中能够查到相应的IC资料,除此以外,也爱莫能助。不过即使这么一小点,也足以让沈俊感激涕零,毕竟可以不用那么盲目了。
       
       黄华中交给沈俊的任务是,第二版回来了,有一些元器件没有焊上去,将它们给补上。段伏枥看着这贴片的元器件,心中不由发颤。想当年大学的时候,有一个设计就是焊接收音机。原理图,板子,元器件,什么都有,并且这元器件还是插件式的。如果仅仅以一般的焊接工的水平来看,焊接这些东西根本就是小儿科;可对于段伏枥来说,这可真不是一件省心的火,特别是怎么焊都无法上锡。一个不合格的焊接,能期望有什么良好的结果?所以,那收音机从来就没响过,连点沙沙的噪音都没有!所幸这门课的考核非常轻松,只要你拿着一台焊好的收音机,能收到节目,递给老师听就可以过关了。而这检查,也不是像考试那般需要大家一起进行,而是一个时间点,大家轮流进行。所以最后段伏枥便借了同学焊接好的一台收音机,蒙混过关。而对于借给自己收音机的同学,连饭也不用请,因为不仅是段伏枥,别的同学也是这么做的。甚至可以这么说,整个专业,大概一百来号人,而做出好的收音机不到十台。换句话来说,大家都是借着这不到十台的好收音机,互相轮流过关的。噢,My God,这便是所谓的天之骄子的残酷真实……
       
       虽然沈俊的硬件原理水平是一片空白,但在焊接方面还是过得去的。至少和段伏枥相比,已经是天壤之别了:沈俊能够焊接贴片器件,并且还能正常工作;而自己整的插件式,却是哑炮。
       
       沈俊来了没多久,便要回学校了,理由很简单也非常充分:毕业答辩。只不过,本来预计是两周之后回来的,但到了期限沈俊还是没有回来。怎么回事呢?吃饭的时候,段伏枥问了问黄华中,才知道事情的原委:毕业答辩没通过。
       
       毕业答辩通不过?这也太离谱了吧?虽然每个专业都是有指定的指标,规定这次要有多少人不通过的,但这些指标一般是落在那些经常逃课之类的黑五类啊!沈俊再怎么看,都不像这样的人。
       
       好奇,打个电话问问:“沈俊,怎么回事?毕业答辩没通过?”
       
       虽然仅仅是在电话中,也能听出沈俊愤怒了:“别提了!我们那导师,在答辩前两天,说我的这个课题太空泛了,不能作为答辩的题目,让我重新选题!哎,这课题是他出的让我选的啊!还有两天,居然跟我说这课题不行!要是真不行,干嘛不早说!只有两天,你能让我怎么办?”
       
       “后来呢?”
       
       “有什么办法,我就只好重新选新的课题咯,这两天通宵整论文,最后还是没过。现在只能等一周后的重新答辩了”
       
       听到这里,段伏枥明白了,因为之前他的一个高中同学也遇到过类似的事情,于是对沈俊说道:“噢,原来是这样。我知道你为什么不过了,其实如果你做点事,那么重新答辩你一样不过。”
       
       关系到切身利益,没有谁不心焦,沈俊急忙问道:“你说嘛!到底怎么回事,别卖关子了!我现在急死了!”
       
       听着沈俊这焦虑的声音,段伏枥继续问道:“你没有给老师送礼吧?”
       
       沈俊很奇怪地问道:“没有啊,这个有关系吗?”
       
       “你这傻妞!难道你没听出来吗?答辩前两天说题目不合格,这可能吗?摆明是暗示你,让你送礼啊!你想啊,作为导师,题目可不可以还不是他说了算?何况这题目还是他自己出的,说不合格那不是自己打自己嘴巴吧吗?他要的,是要你送礼!你不送,他肯定不会让你过!”
       
       沈俊吃惊得哦了一声,但还是有点不太相信地说到:“他不会这么恶心吧?毕竟人家是大学教授啊!”
       
       “哼,在中国,最恶心的就是这些叫兽和砖家,你看他们抛出来的论调,有哪些能获得大家的认可的?并且他们这些叫兽,如果评不上级别,看着别人的油水哗啦哗啦的,他们不眼红啊?他们也要拿好处的啊。那么这羊毛要出在哪里?那肯定就是在学生的身上!”
       
       这时候,沈俊已经有半分相信:“那怎么办?我要送点什么?”
       
       “买点酒哦,还有一条好点的烟,最好还包上个红包,应该也就差不多了……”
       
       “哦,那好吧。不用再送什么了吧……”
       
       “一般来说,应该差不多了。如果这叫兽死性不改的话,也许还需要潜规则一下……”
       
       沈俊疑惑了:“什么潜规则……”
       
       “就是演艺圈为了争到演女主角的那个潜规则啦……”
       
       沈俊在电话一头大叫:“啊?我不会为了这毕业证,还要献身吧?”
       
       段伏枥无奈地说:“我不知道你那导师的品性,最多我在深圳的仙湖公园帮你拜拜佛,让他将你那导师变成阳痿吧……”
       
       “你……”
       
       最后,沈俊还是按照段伏枥的建议,买了两瓶酒和一条烟,当然还包了个红包,送到导师家。据说那导师一开始还假惺惺说不能收礼物,但最后还是很高兴地拿走了,并且在第二天就给沈俊电话,说让她放心去答辩,一切包在他身上。结果自然是美好的,沈俊站在答辩台,念了一下论文的前言,就被告知答辩通过。虽然沈俊最后是花了不少钱,但所幸没有被潜规则,也算是不幸中之大幸。但至于为何没有被潜规则,是因为导师根本就没此打算呢,还是说段伏枥的拜佛起了作用,那也无从考究了……
  • 相关阅读:
    Atitit.随时间变色特效 ---包厢管理系统的规划
    Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
    Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
    atitit.薄伽梵歌overview  attilax 读后感
    Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称
    Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称
    atitit.薄伽梵歌overview  attilax 读后感
    Atitit 《摩奴法典》overivew 读后感 不是由国王 颁布的,而是 僧侣编制
    Atitit 《摩奴法典》overivew 读后感 不是由国王 颁布的,而是 僧侣编制
    Atitit.执行cli cmd的原理与调试
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6172944.html
Copyright © 2011-2022 走看看