扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:Justin James 2007年5月15日
关键字:
再加上一些聪明的程序员为了节省内存,不将数据复制到局部范围变量,而是直接读取(在一些情况下这样做会有好处,像如果共享项目是一个50MB大小的巨大字符串时),因此你可能会看到一些奇怪的事情。具体来说,我倒希望程序员看到一些奇怪的东西。因为如果不是这样的话,你的终端用户可能会从应用程序中得到一些不良数据。
最近我一直在提出这个观点:最终大部分程序员都不得不使用多线程。但许多人不同意我的看法。那好,我能够知道他们这些想法的来源。确实,许多应用程序用多线程使“取消”按钮工作,或是更新进度条,以及其它一些情况。如果这是他们所需要的,那就是这样了。
但是,对于那些编写可能被其他人(或他们自己,一旦他们的内存出现不足)重复使用的代码程序员来说,在文档中说明线程的安全状况就显得尤为重要。
同时,我们还应指明代码在多线程环境中会如何反应。不这样做可能会造成一些问题,或者是代码的使用者在你锁定的时候也执行锁定(双重互斥,双重乐趣);或者是由于在需要锁定时你们都没有进行锁定,那么数据会以某种微妙或不太微妙的方式迅速遭到破坏。
理想情况下,我希望看到一种让你确定某块代码为线程安全的语言;并且当你在多线程环境下使用一个非线程安全的项目时,编译器会发出警报(你甚至可以让Intellisense在编译前找出问题)。遗憾的是,我们无法找到能够100%有效处理当前语言和技术的编译器或编辑器,特别是根据运行时间配置加载(或运行)不同代码的动态语言或应用程序更是如此。
所以,在那一天到来之前,即使你自己不需要编写多线程代码,请要么编写线程安全的代码,或是清楚(或用明确的方法)标明你的代码为非线程安全代码。
责任编辑:德东
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者