西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发其它知识 → 浅谈多线程编程设计在程序开发中的滥用

浅谈多线程编程设计在程序开发中的滥用

相关软件相关文章发表评论 来源:本站整理时间:2010/11/29 14:09:47字体大小:A-A+

作者:佚名点击:57次评论:0次标签: 线程 模块 事件 消息队列

  • 类型:编程辅助大小:1.8M语言:英文 评分:6.0
  • 标签:
立即下载

通过合理创建任务(或线程)的方式,可以有效地提高软件设计的模块性。通过让一个任务关注于某一类事务,有助于简化任务体函数的实现,以及提高程序的可维护性。另外,多任务在不少情形下,将提高系统的运行效率,因为一个任务在等待所需资源时,另一个任务可以利用处理器做更多的事。尽管多任务有它的好处,但使用多任务的“度”很重要。就作者的观察,多任务设计方法大有被滥用之势,乃至有的工程师习惯于一做设计就想到运用多任务。出现这种状况的原因,是因为没有意识到多任务设计所带来的问题。

运用多任务的设计方法,往往需要使用到任务同步的方法(互斥锁、信号量、事件和消息队列等),以保证多个任务有序地协同工作,以便避免出现竞争问题。但是,使用任务同步的方法并不是每个人都很擅长,乃至即使觉得自己很擅长,也很容易一糊涂就设计出存在竞争问题的代码。再则,对于大型项目,由于代码量的急剧增长,多任务所带来的竞争问题更加不容易被发现,一旦发生问题就相对严重,而且不容易查错。

任务数量使用得过多,所带来的另一个问题是,因为多个任务的存在,将带来更多的任务切换。也因为任务过多,而使得任务之间的通讯开销更大。总的来说是,有可能造成系统性能问题。

作者也经历了从大量使用多任务设计到回归避免使用多任务的成长历程,也明白在很多情形下,采用多任务设计的冲动源于卖弄自己具备多任务的编程能力,以及愧疚于不采用多任务会造成系统性能问题。其实,一旦我们冷静下来思考多任务设计时会发现,自认为多任务所带来的好处,在系统中很可能并不是关键。另外,我们也很有可能没有考虑采用多任务设计所带来的不良副作用。

从用户的体验来看,一个软件产品最终必须具备良好的鲁棒性,即稳定。否则,无论多么好的功能特性,产品最终都将被用户给抛弃。因此,软件在开发活动中的主旨之一,应是采用容易获得高质量的方法,而不是运用更多的“高科技”。这种策略,允许适当地降低对团队能力的要求,毕竟,要获得一个能力都非常强的团队不是一件易事。

作者曾在一个项目中,开发出了一个运行于Linux操作系统之上的、基于TCP套节字的网络通讯框架,采用的是单线程的设计思想。这个框架通过采用select()函数,可以处理多个套接字的建链和通讯。在设计的过程中,由衷地感叹采用单线程的方式大大地简化了设计和调试工作。当作者将这一设计思路与一些同事交流时,他们所表现出来的不理解却大相径庭。因为在他们看来,套接字通讯无论如何也得考虑用多线程的设计方法。有一点需要交代一下,作者采用单线程的设计方法,也是基于应用场景并不存在大负荷的通讯数据。

无论如何,当我们考虑运用多任务设计时,静下心来思考一下它所带来的利与弊,有助于我们克服魔鬼般的冲动。一旦考虑清楚了应当采用多任务设计,那还是应当勇往直前。

最后,即使是使用更少的任务,也并不妨碍软件的模块化设计。因为通过设计,完全可以实现模块与任务相分离,也就是即使不采用多任务,同样可以获得良好的软件模块化。

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)