科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件多线程与数据完整性

多线程与数据完整性

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

今天我们讨论一个最近我比较喜欢的话题:多线程和数据完整性。我知道,你们中的一些人可能讨厌这个话题,但今天我会从一个全然不同的角度讨论这个问题:责任和道德。

作者:Justin James 2007年5月15日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

再加上一些聪明的程序员为了节省内存,不将数据复制到局部范围变量,而是直接读取(在一些情况下这样做会有好处,像如果共享项目是一个50MB大小的巨大字符串时),因此你可能会看到一些奇怪的事情。具体来说,我倒希望程序员看到一些奇怪的东西。因为如果不是这样的话,你的终端用户可能会从应用程序中得到一些不良数据。

最近我一直在提出这个观点:最终大部分程序员都不得不使用多线程。但许多人不同意我的看法。那好,我能够知道他们这些想法的来源。确实,许多应用程序用多线程使“取消”按钮工作,或是更新进度条,以及其它一些情况。如果这是他们所需要的,那就是这样了。

但是,对于那些编写可能被其他人(或他们自己,一旦他们的内存出现不足)重复使用的代码程序员来说,在文档中说明线程的安全状况就显得尤为重要。

同时,我们还应指明代码在多线程环境中会如何反应。不这样做可能会造成一些问题,或者是代码的使用者在你锁定的时候也执行锁定(双重互斥,双重乐趣);或者是由于在需要锁定时你们都没有进行锁定,那么数据会以某种微妙或不太微妙的方式迅速遭到破坏。

理想情况下,我希望看到一种让你确定某块代码为线程安全的语言;并且当你在多线程环境下使用一个非线程安全的项目时,编译器会发出警报(你甚至可以让Intellisense在编译前找出问题)。遗憾的是,我们无法找到能够100%有效处理当前语言和技术的编译器或编辑器,特别是根据运行时间配置加载(或运行)不同代码的动态语言或应用程序更是如此。

所以,在那一天到来之前,即使你自己不需要编写多线程代码,请要么编写线程安全的代码,或是清楚(或用明确的方法)标明你的代码为非线程安全代码。

责任编辑:德东

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章