- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于goroutineweb并发编程研究与应用
基于goroutineweb并发编程研究与应用
摘要:Goroutine是Go语言提出的轻量级线程,可应用于需要高并发的场景中。该文对Goroutine并发编程及其所涉及到的相关知识和编程基础进行了讨论,对其效率进行了对比和分析,并实现了社交网站服务端语言层面的应用。基于Beego的社交网站所涉及需要进行高并发编程的部分主要包括推送功能和数值计算,该文涉及了相应的应用。
关键词:GO语言 Goroutine;并发 web
中图分类号:TP311 文献识别号:A 文章编号:1009-3044(2015)33-0052-03
Research and Application of Goroutine Concurrent Programming Based on Web
CHEN Wei-ying, LI Yan-ping, ZHAI Yue
(School of Computer Science of Beijing Information Science Technology University, Beijing 100101,China)
Abstract: Goroutine is a lightweight thread of Go language, which can be applied to the scene of high concurrency. In this paper, the Goroutine concurrent programming and its related knowledge and programming are discussed. The efficiency is compared and analyzed, and the application of the social web server is realized. Beego based social networking sites involved in the need for high concurrent programming part of the main including the push function and numerical calculation, this paper relates to the corresponding application.
Key words: Golang Goroutine; concurrency web
对于用户量成百上千万的web应用来说,如何处理高并发的访问和操作是一个很大的挑战。一方面,大部分网络应用程序都被设计成客户/服务器模式, 目的是让服务器为客户提供一些特定的服务。服务器分为重复型服务器和并发型服务器, 前者一个时刻只能处理一个请求, 其他客户的请求暂时放在队列里,等待上一个请求处理完成后再进行处理;后者为每个客户请求产生一个新的线程为其服务, 而主线程继续等待其他客户的请求;另一方面,人们试图通过其他手段对服务器业务处理效率进行提升。
在本文中我们讨论的是在Go语言的Goroutine在语言级别进行的并发编程在web方面应用。
1 并发概念阐述
并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
并发包含着几种主流的实现模型:多进程、多线程、基于回调的非阻塞/异步IO、协程,能更客观地表现问题模型,可以充分利用CPU核心的优势,提高程序的执行效率,能充分利用CPU与其他硬件设备固有的异步性。
2 Goroutine并发机制的研究
2.1 设计原理
Go语言并发编程的核心是:同步通信;其关键字包括:Goroutine和Channel。
Go语言的并发体系是C.A.R Hoare在1978年提出的CSP(Communication Sequential Process,通信顺序进程),在该语言中,一个并发系统由若干并行运行的顺序进程组成,每个进程不能对其他进程的变量赋值。进程之间只能通过一对通信原语实现协作:Q-x表示从进程Q输入一个值到变量x中;Px,同时Q进程执行P-e时,发生通信,e的值从Q进程传送给P进程的变量x。后来出现的实用编程语言OCCAM即以CSP为基础发展而成。
2.2 Goroutine机制简述
Goroutine语法为:go fun(),本质上是一个线程,但规模比线程要小,体现在底层是五六个线程。它由Go运行时初始化并调度,操作系统根本看不到Goroutine的存在。所有的goroutin
原创力文档


文档评论(0)