# 进程:本质上就是一个程序在一个数据集上的一次动态执行过程(抽象的概念) # 进程一般由程序、数据集(程序运行过程中所需要使用的资源)、进程控制块(记录进程的外部特征,描述进程的执行变化过程)三部分组成 # 进程是最小的资源单位 # 线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一... ...
                            
                            
                                分类:
编程语言   时间:
2018-08-18 00:56:36   
                                阅读次数:
168
                             
                    
                        
                            
                            
                                前言 本文来自方腾飞老师《Java并发编程的艺术》第一章。 并发编程的目的是为了让程序运行得更快,但是并不是启动更多的线程就能让程序最大 限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战,比如上下文切换的问题、死锁的问题,以及受限于硬 件和软件的资源限 ...
                            
                            
                                分类:
编程语言   时间:
2018-08-13 12:14:21   
                                阅读次数:
145
                             
                    
                        
                            
                            
                                作者|Russell Cohen 译者|张卫滨 本文通过 Java 和 Golang 在底层原理上的差异,分析了 Java 为什么只能创建数千个线程,而 Golang 可以有数百万的 Goroutines,并在上下文切换、栈大小方面对两者的实现原理进行了剖析。 很多有经验的工程师在使用基于 JVM  ...
                            
                            
                                分类:
编程语言   时间:
2018-08-13 10:49:59   
                                阅读次数:
200
                             
                    
                        
                            
                            
                                进程: 优点:同时利用多个cpu,能够同时进行多个操作 缺点:消耗资源(重新开辟内从空间) 线程: 优点:共享内存,IO操作的时候m,创造并发操作 缺点:抢占资源 进程不是越多越好,cpu个数=进程个数 线程也不是越多越好,请求上下文切换耗时 线程锁 threading.Rlock 和 thread ...
                            
                            
                                分类:
编程语言   时间:
2018-08-12 23:37:57   
                                阅读次数:
211
                             
                    
                        
                            
                            
                                    1、线程相关概念 1)、线程与进程的区别 线程是操作系统调度的最小单元,也叫轻量级进程,而进程是操作系统中的应用程序,在进程中可以创建多个线程。 2)、上下文切换 我们知道现代处理器都是多核的,几核处理器只能同时处理几个线程,多线程执行程序看起来是同时进行,实际上是CPU在多个线程之间快速切换执行, ...
                            
                            
                                分类:
编程语言   时间:
2018-08-12 00:31:25   
                                阅读次数:
237
                             
                    
                        
                            
                            
                                    并发:逻辑上具备同时处理多个任务的能力(单核,上下文切换) 并行:物理上同一时刻执行多个并发任务(多核,互不影响) 进程退出并不会等并发任务执行结束,可用channel阻塞,然后发出退出信号 等待多个任务结束,使用sync.WaitGroup,通过设定计数器,让每个goroutine在退出前递减,直 ...
                            
                            
                                分类:
其他好文   时间:
2018-08-10 17:15:02   
                                阅读次数:
185
                             
                    
                        
                            
                            
                                    概要:并发通常是提高运行在单处理器上的程序的性能。 上面这句话听起来可能会违背直觉。如果你仔细考虑一下就会发现,在单处理器上运行的并发程序开销确实应该比该程序的所有部分都顺序执行的开销大,因为其中增加了上下文切换的代价(从一个任务切换到另一个任务)。表面上看,将程序的所有部分当作单个的任务运行好像是 ...
                            
                            
                                分类:
其他好文   时间:
2018-08-07 23:59:49   
                                阅读次数:
322
                             
                    
                        
                            
                            
                                    一、从一个问题说起 相信很多人在玩手机还是PC时,都曾碰到过这样一种情况,安装的软件多了系统性能就变慢了,但是去查看CPU利用率一直都低于10%,内存也很充足。我在近期的开发工作中就碰到了类似的情况,不同的是,系统此时只有一个测试程序和几个睡眠的后台进程,说明是系统,特别是驱动部分可能出现问题导致的 ...
                            
                            
                                分类:
系统相关   时间:
2018-08-05 00:45:03   
                                阅读次数:
207
                             
                    
                        
                            
                            
                                    什么是上下文切换 上下文切换(context-switching)是存储和恢复CPU状态的过程,它使得线程执行能够从中断点恢复执行。 上下文切换时多任务操作系统和多线程环境的基本特征。 即使是单核CPU也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个 ...
                            
                            
                                分类:
编程语言   时间:
2018-08-05 00:30:03   
                                阅读次数:
168
                             
                    
                        
                            
                            
                                概念 咱们知道多进程和多线程是实现并发的有效方式。但多进程的上下文切换资源开销太大;多线程开销相比要小很多,也是现在主流的做法,但其的控制权在内核,从而使用户(程序员)失去了对代码的控制,而且线程的上下文切换也是有一定开销的。 这时为了解决以上问题,"协程"(coroutine)的概念就产生了。你可 ...
                            
                            
                                分类:
Web程序   时间:
2018-07-30 19:33:06   
                                阅读次数:
216