前言

时间就是一把杀猪刀,岁月更是毫不留情的在我英俊的脸上留下痕迹!恨呀,这就开始了我的社会之旅。2015年上海,在拉钩网中投遍了IOS实习岗,两家面试!在面试中受到的打击着实不清呀,其中心酸就不一一道来了。在学校时候学的不认真,学习的时候又没有笔记,知识在又没有实际的项目实践,最后的结果就是什么都知道都听过,但是具体的什么都说不出来!所以毅然决然的决定投身于写博客的大队伍中,与各位共勉。

(PS:既然是社会之旅,除了技术的敲门砖,当然还有就是做人了!我只能说我被HR给刷过)

漫漫谈(Process and Thread)

作为资深的菜鸟级应届毕业生,我向大家承若本文包括以后的所有文章都将是“原创”------那是不可能的,是原创加借鉴啦~~(其实就是“抄袭了”,我相信写过毕业论文的童鞋们都身+“深”有体会!)

首先来谈谈 process(传说中的进程) and thread(传说中的线程),不知道大家有没有发现中文的进程与线程是很有迷惑性(TMD就一字之差),但是当你洋气的用 process and thread to read them 你就会问“他们”之间有半毛钱关系吗,确实有点关系的!只能说大english确实很有意思的,英语不行的”鸟“儿们该向我们大english妥协了,因为所有新的技术一开始都是english版的,不要否认!swift刚出就只有就是英文版的。虽然我也是”四级“飘过的渣渣!

Process VS Thread

process (进程):A process is an executing  instance of an application.

进程是APP运行(执行)的实例

Thread (线程):A thread is a path of executionwithin a process.

线程是进程中的一条运行(执行)路径。

看到这里我就有点像吐槽下教科书神马的了,天书呀有木有!读者们,别骂我从洋媚外

一个App启动或者说运行的时候,就会在Operation System(操作系统)中创建一个process,是windows的同学打开你的 the task manager(任务管理器)看下你早已运行的QQ是有多少个processes? 有多少Threads? 用mac的同学打开你们的Activity Monitor,本人用的是mac503 五年前的产品了,附图如下:

大家看我们的大QQ,QQ在Activity Monitor中只是mac运行中 All Processes中的一个process,而QQ中的Threads有9条。这样就完美的诠释了process(进程)和 thread(线程)的概念。

下面来聊聊,进程与线程之间的恩怨(process VS thread),那么他们之间的有什么不同呢?

先上英文版的:(借鉴地址:同上)

1. Threads are easier to create than processes since they

don‘t require a separate address space.

2. Multithreading requires careful programming since threads

share data strucures that should only be modified by one thread

at a time.  Unlike threads, processes don‘t share the same

address space.

3.  Threads are considered lightweight because they use far

less resources than processes.

4.  Processes are independent of each other.  Threads, since they

share the same address space are interdependent, so caution

must be taken so that different threads don‘t step on each other.

This is really another way of stating #2 above.

5.  A process can consist of multiple threads.

1、由于创建process(进程)需要分配一个片单独的地址空间(或者说内存空间),而thread是进程中执行的路径,线程使用的地址空间(内存空间)就是process(进程)的空间,不需要额外消耗内存创建线程。所以说线程的创建比进程容易。

2、原文翻译:由于线程之间共享同一数据结构,在同一时间里只能由一个线程对数据结构进行修改,因此多线程编程需要非常小心,而对于进程就不要担心了,因为进程之间都有各自独立的地址空间。

见解:由于线程之间是共享同一数据结构的,所以一旦线程很多,那么就会出现线程对同一数据修改的混乱问题。所以在多线程编程时一定要思路清晰。

3、原文翻译:线程被认为是轻量级的,因为线程所需的资源比进程少的多。

见解:在文章的原文有一句这样子的话,我也挺认同的:It’s important to note that a thread can do anything a process can do. 意思是:很有必要指出线程可以做到进程可以做的任何东西。我们可以这样理解,进程就是悟空,线程就是就是悟空的分身了。悟空的分身可以干悟空能干的事情,但是分身就是分身实力有限,所以可以被认为是轻量级的;而悟空本人就牛逼多了,所以被认为是重量级的(heavyweight)。

4、原文翻译:进程之间是相互独立的,而线程之间由于分享的是同一地址空间所以是线程之间是不独立的。所以一定要小心线程之间的“互踩”(同时对一个对象进行操作)。

5、原文翻译:一个进程可以由多个线程组成。

ps:第一次写博文,不好之处欢迎吐槽!由于操作系统知识忘的差不多了,改天一定把补上!

时间: 03-14

linux线程互踩,IOS 多线程漫漫谈(Process and Thread)相关推荐

  1. ios多线程浅谈和使用

    多线程一直是很操蛋的一个话题,其实如果你理解了很简单,没理解很麻烦:在OC中多线程通常有以下四种 四种线程 pthread_t ,NSThread, GCD,NSOperation+NSOperati ...

  2. IOS多线程开发详解

    概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的,一个复杂的多步操 ...

  3. linux 线程_浅谈Linux线程模型

    Thread Basic 基础概念 线程是操作系统能够调度和执行的基本单位,在Linux中也被称之为轻量级进程.从定义中可以看出,线程它是操作系统的概念,在不同的操作系统中的实现是不同的,不过今天分享 ...

  4. 查linux有哪些task_浅谈Linux线程模型

    Thread Basic 基础概念 线程是操作系统能够调度和执行的基本单位,在Linux中也被称之为轻量级进程.从定义中可以看出,线程它是操作系统的概念,在不同的操作系统中的实现是不同的,不过今天分享 ...

  5. 浅谈linux线程模型和线程切换

    本文从linux中的进程.线程实现原理开始,扩展到linux线程模型,最后简单解释线程切换的成本. 刚开始学习,不一定对,好心人们快来指正我啊啊啊!!! linux中的进程与线程 首先明确进程与进程的 ...

  6. iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用(上)

    2017-07-08 remember17 Cocoa开发者社区 目的 本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述. 多线程的基本概念 线程的状态与生命周期 ...

  7. linux进程查看所有线程,Linux中查看进程的多线程的方法

    在SMP系统中,我们的应用程序经常使用多线程的技术,那么在Linux中如何查看某个进程的多个线程呢? 本文介绍3种命令来查看Linux系统中的线程(LWP)的情况: 在我的系统中,用qemu-syst ...

  8. Linux系统编程36:多线程之线程控制之pthread线程库(线程创建,终止,等待和分离)

    文章目录 (1)POSIX线程库 (2)pthread_create--创建线程 A:关于Linux线程的再理解 B:线程ID及地址空间布局 (3)pthread_exit--线程终止 (4)pthr ...

  9. linux线程并不真正并行,多核时代:并行程序设计探讨(3)——Windows和Linux对决(多进程多线程)...

    并行程序设计探讨(3)--Windows和Linux对决(多进程多线程) 前面的博文经过分析总结,最后得出两种并行技术:多进程多线程.多机协作.对于多进程和多线程来说,最有代表性且最常见的的莫过于Wi ...

  10. linux线程 ppt,Linux多线程编程多核编程.ppt

    <Linux多线程编程多核编程.ppt>由会员分享,可在线阅读,更多相关<Linux多线程编程多核编程.ppt(28页珍藏版)>请在装配图网上搜索. 1.Linux多线程编程, ...

最新文章

  1. 怎么自学python编程-怎么自学python?
  2. 让IDA Pro输出能让gcc编译器直接编译的.s汇编文件
  3. GC算法以及垃圾回收器
  4. 【算法竞赛学习】数字中国创新大赛智慧海洋建设-Task4模型建立
  5. 2-11 支付宝集福卡_实现分析
  6. jenkind + git + mave + shell + tomcat
  7. 2018-2019-1 20165204 实验三 实时系统
  8. POJ2356 Find a multiple 鸽巢原理
  9. 完整的python项目实例-python完整项目
  10. 黑苹果登录apple id_充分利用Apple登录功能
  11. factory(工厂) 模式简单示例
  12. 技术族谱:预告片的制作思路
  13. 尼克尔镜头上边的字表示什么?
  14. 寒假线上兼职:300-500元/小时,安利一个大学生也能月入8K的线上兼职!
  15. vr计算机方面的应用,AR和VR到底有什么区别,分别应用在哪些方面?
  16. 根据药物名找华法林的代谢通路并可视化KGML文件
  17. AD2019 层次原理图
  18. 金仓数据库 Oracle至KingbaseES迁移最佳实践(2. 概述)
  19. python股票成交明细_Python股票成交价格-买卖额分布图(三)
  20. 实验10-9 十进制转换二进制 (15 分)

热门文章

  1. matlab绘直方图,[转载]matlab中函数bar绘制直方图
  2. JavaScript实现哈希表数据结构
  3. Android开发视频教程,最全面的,总共200多集
  4. 【0.96OLED屏幕】原理图及SSD1306引脚功能
  5. batchplot放到哪个文件夹_Batchplot(CAD批量打印工具)下载
  6. ib网卡命令_linux安装卸载IB网卡(mellanox)驱动
  7. iPhone XS Max A2101(D3XP X1048 MLB P1 D33P) 820-01225 苹果手机点位图
  8. 【Java】ResourceBundle 使用
  9. vbs脚本学习整人Demo
  10. Unity3D Odin Inspector 简单介绍与入门