IOS多线程漫漫谈(ProcessandThread)-创新互联

前言

10余年的尖草坪网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整尖草坪建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“尖草坪网站设计”,“尖草坪网站推广”以来,每个客户项目都认真落实执行。

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

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

漫漫谈(Process and Thread)

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

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

Process VS Thread

借鉴地址:http://www.programmerinterview.com/index.php/operating-systems/thread-vs-process/

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

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

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

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

看到这里我就有点像吐槽下教科书神马的了,天书呀有木有!读者们,别骂我从洋媚外IOS 多线程漫漫谈(Process and Thread)

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

大家看我们的大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:第一次写博文,不好之处欢迎吐槽!由于操作系统知识忘的差不多了,改天一定把补上!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:IOS多线程漫漫谈(ProcessandThread)-创新互联
文章路径:http://myzitong.com/article/dspoji.html