常见并发模型
- 进程 & 线程(Apache)C10K
- 异步非阻塞(Nginx,Libevent,NodeJS) 复杂度高
- 协程 (Golang,Erlang,Lua)
并发与并行
- 并发:指同一时刻,系统通过调度,来回切换交替的运行多个任务,"看起来"是同时进行
-
并行:指同一时刻,两个任务"真正的"同时进行
图一.png
Golang并发实现
- 程序并发执行(goroutine)
- 多个goroutine间的数据同步和通信(channels)
- 多个channel选择数据读取或写入(select)
Goroutine(程序并发执行)
foo() //执行函数foo,程序等待函数foo返回 go foo() //执行函数foo bar() //不用等待foo返回
Channels(多个goroutine间的数据同步和通信)
c := make(chan string) //创建一个channel go func() { time.Sleep(time.Second*1) c <- "hello world" //发送数据到channel中 }() msg := <- c //阻塞直到接收到数据
Select(从多个channel中读取或写入数据)
select{ case v := <-c1: fmt.Println("channel 1 send",v) case v := <-c2: fmt.Println("channel 2 send",v) default: //可选 fmt.Println("channel was ready") } //c1和c2同时有数据时,select随机选一个
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Go并发编程-并发编程难在哪里
- Java并发编程的艺术,解读并发编程的优缺点
- Java并发系列—并发编程基础
- JAVA并发编程之并发模拟工具
- Java并发系列—并发编程的挑战
- c++并发编程—分布式编程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
构建高性能Web站点
郭欣 / 电子工业出版社 / 2012-6 / 75.00元
《构建高性能Web站点(修订版)》是畅销修订版,围绕如何构建高性能Web站点,从多个方面、多个角度进行了全面的阐述,几乎涵盖了Web站点性能优化的所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、Web服务器缓存、反向代理缓存、脚本解释速度、页面组件分离、浏览器本地缓存、浏览器并发请求、文件的分发、数据库I/O优化、数据库访问、数据库分布式......一起来看看 《构建高性能Web站点》 这本书的介绍吧!