线程——恐吓或威胁
尽管unix开发者早就习惯于通过多个协作进程进行计算,他们仍然没有使用线程的自发传统。线程最近才从其它地方移植过来,而unix开发者不喜欢线程这件事,决不仅仅是意外或历史的偶然。
从复杂度控制的角度看,相对拥有独立地址空间的轻量级进程,线程是个糟糕的替代:线程是那些进程生成昂贵、IPC功能薄弱的操作系统所特有的概念。
从定义上看,尽管进程的子线程通常具有独立的局部变量栈,它们却共享同一全局内存。在这个共享地址空间管理竞争和临界区的任务相当困难,而且成为整体复杂度和滋生bug的温床。可以这样去做,但随着锁定机制复杂度的增加,意外交互作用所造成的竞争和死锁机会也相应增加。
线程成为滋生bug的温床源于它们太容易知道过多彼此的内部状态。与有着独立地址空间、必须通过明确IPC进行通信的进程不同,线程没有自动封装。这样,基于线程的程序不仅产生普通的竞争问题,而且产生了新一类bug:时序依赖,要重现这些问题都极其困难,遑论修复。
线程开发者已经觉察到这个问题。最近的线程实现和标准则体现了对提供线程本地存储的更多关注,其目的是限制共享全局地址空间所产生的问题。随着线程API朝这个方向发展,线程编程开始越来越像是对共享内存的有约束应用了。
线程常常阻碍了抽象。为了防止死锁,经常必须了解所使用的库是否使用和如何使用线程,以避免死锁问题。类似地,在程序库中使用线程还可能受到应用层使用线程的影响。——Davie Korn
unix为什么喜欢进程不喜欢线程
转载上一篇:微软工程院需要什么样的人?
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
为什么人们不喜欢 PHP?
PHP 是超文本预处理器、一种面向 Web 开发的通用脚本语言,尽管有些人认为 PHP 已经过时,但 PHP 仍在互联网上使用,
php javascript 前端 开发人员 -
我不是不喜欢工作,只是不喜欢开会
项目经理最躲
html 项目管理 css 微软 animation -
程序员为什么不喜欢关电脑?
关机意味着他们必须保存和关闭所有的工作,下次再次打开时需要重新加载和恢复。因此,对于程序员来说,电脑是他们
电脑 学习 科技 程序人生 应用程序 -
【程序员为什么不喜欢关电脑?】
总的来说,程序员不关电脑是出于各种原因,包括工作流程、数据安全、即时性和个人习惯等方面的考虑。但是,为了保护电脑和节省能源,定期关闭电脑仍然是一个好习惯。
程序人生 远程工作 程序员创富 创业创新 学习方法 -
还没解决如何养活自己,谈什么喜欢不喜欢?
假期闲来无事逛“知乎”,发现了现在大家最关注最多的话题,还是职场。毕竟,职场生活是我们一生中,最长的一段路。而在
接口自动化测试 软件测试 职场和发展 自动化测试 面试