• 线程/进程的区别之小议(一)


    ###用简单的例子说明, 你如果想同时拨电话给 A, B,那么可以这么做.

    用两个电话, 分别拨出,然后分别对他们说话 -- 多线程设计,线程共享全局数据

    ###找小张,小王,让他们分别打电话给A,B -- 多进程设计,多进程的数据是完全隔离,必须通过进程间通信,解决数据共享的问题.

    进程比线程更健壮稳定,但是设计更为复杂. 多线程很容易同步状态,相当于一个人同时处理多个任务, 多进程难度就比较高,相当于团队管理. UI中线程运用较多. 高性能服务设计当中,只用进程,因为隔离度高. 

    比如Oracle/msqlserver 都有专门的进程负责读写,专门的进程负责记录日志,专门的进程负责网络连接.... 非对等多进程(进程分别负责不同的事情),可以非常好的管理并发问题. 而mysql 是对等多线程/进程(所有进程/线程做同样的事情), 必然遇到争用的问题, 所以mysql 是无法很好处理并发写,除非整个软件重写. 这也是宏哥认为mysql 不是数据库的其中一个原因.

    Open source的大多软件,都可以作为反面教材,尤其是在软件设计领域.

    同时win 的进程和 linux进程有所不同. Linux对父进程进行完整拷贝,win 类似linux中轻进程.互相不等价.

    线程比进程更快,是完全扯淡的东西. 线程唯一的优势是数据共享简单,以及Bootstrap成本更低,代价就是一个线程出问题,全部挂掉. 典型比如Java虚拟机这个烂玩意.

    ~~~~聊天室 就是用的线程 如果用进程的话 系统不一会就端口不够用了 内存什么的也不够  好处是:我想T人 直接根据套接字或者IP 在socket层一脚T掉  每个连接都是一个线程 缺点是必须写client端 服务器本身是进程用来接收线程 统一80端口  QQ也是这个模式 

    ~~~~~~  明显的舆论倾向有时候是集体的醒悟, 有时候也是集体的愚昧迷信. (就像一群死囚犯互相鼓励说,政府免除我们死刑了,免除了,免除了,虽然让人暂时幻想暂时解脱,但事实永远会来到.)
           面向对象曾经的极力鼓吹就是一例. 个人同样觉得多进程被鼓吹的有点过了.(或许是因为对google的chrome方案的崇拜吧)
          多进程和多线程的本质其实很清楚.就那么几条. 2种模型有好有坏,重复教科书的概念是没意义的. win是非常正统的实现了的教科书式线程模型, 多线程用在win上很合适. 在linux/unix上多线程性能好处不那么大了.  但在win下, 还照搬linux的经验一定要鼓吹全面多进程化,  就让人不明白了, 有好东西 你还不爱用??? 至于通信的复杂度,我觉得多进程/多线程 各有各的痛苦,难兄难弟, 但多线程不人性化. (多进程人性化的原因是因为它只剩较人性化方案:消息队列可用了, : )   )  出错后隔离资源(不必再费劲初始化) ,多进程稳赢.  性能上 多线程稳赢. 看各自需求了.
            崩溃的问题, 多进程里代码崩溃后,通信是一样要停滞下来; 多线程模型中捕获异常后重启逻辑,或者重启整个进程, 大家效果是一样的. 如同" java程序不会崩溃, 只是会报异常, 而C++程序会崩溃, 简直太可怕了.好恐怖. " 只能冷笑,好像用上异常 逻辑就可以一路无错顺畅的跑到死.   崩溃和异常对于逻辑本质上有区别吗? no. 进程崩了,你还得操心把它重启, 正对应着 多线程下, 程序崩溃了,你要重启整个进程,或者能想出完美的资源释放/逻辑重置方案 继续运行下去.  出错处理,没人可以省心.
            分析自己应用的具体状况, 2者混合用,最佳. firefox把plugincontainer分出去.利用了多进程的优点,把爱崩溃,资源状况复杂的垃圾插件丢出去, 就是非常nice的设计.

    Fight fight fight ! 你有你的奇迹 ! Fight fight fight ! Just to be yourself !
  • 相关阅读:
    【uiautomator】Interfaces+Exception
    【uiautomator】UiDevice
    【uiautomator】Uiautomator API
    【uiautomator】运行命令
    [www.infoshare.cc]【uiautomator】输入中文(输入法安装+测试代码)
    MFC ,List使用
    VC控件DateTimePicker使用方法
    GitHub vs. Bitbucket 不只是功能不同
    免费的私人代码托管(bitbucket) 和 常用git指令
    修改android studio中的avd sdk路径、avd sdk找不到的解决方案
  • 原文地址:https://www.cnblogs.com/sjlove/p/3151753.html
Copyright © 2020-2023  润新知