捉虫大师 捉虫大师
3年前
写了一年golang,来聊聊进程、线程与协程
本文已收录https://github.com/lkxiaolou/lkxiaolou欢迎star。进程在早期的单任务计算机中,用户一次只能提交一个作业,独享系统的全部资源,同时也只能干一件事情。进行计算时不能进行IO读写,但CPU与IO的速度存在巨大差异,一个作业在CPU上所花费的时间非常少,大部分时间在等待IO。为了更合理的利用
Easter79 Easter79
3年前
tars framework 源码解读(一) 代码简述
tarsframework 的源码大体分3部分1、framework 框架的实现,里面内容是框架各个基础服务具体做的事;2、servant实现的内容是单个服务基础lib的封装,包括网络IO,协程,逻辑管理等封装;3、Util里一些高性能数据结构的实现。framework 和servant是这个框架,实现高可用设计,Util则是腾
Wesley13 Wesley13
3年前
Go语言
发现问题今天在看代码的时候,遇见了多个协程写同一个slice的情况,发现未对slice做任何保护,亦未使用其他手段保证并发安全,这样肯定会出错的。思考slice不是协程安全的,所以在多个协程中读写slice是不安全的,在高并发的情况下会产生不可控制的错误。总结这里记录一下错误的使用方式与正确的使用方式:错误的使用
Stella981 Stella981
3年前
Kotlin 协程真的比 Java 线程更高效吗?
本文首发于vivo互联网技术微信公众号 链接:https://mp.weixin.qq.com/s/OcCDI4L5GR8vVXSYhXJ7w(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fmp.weixin.qq.com%2Fs%2FOcCDI4L5GR8vVX
Wesley13 Wesley13
3年前
100 行写一个 go 的协程池 (任务池)
前言go的goroutine提供了一种较线程而言更廉价的方式处理并发场景,go使用二级线程的模式,将goroutine以M:N的形式复用到系统线程上,节省了cpu调度的开销,也避免了用户级线程(协程)进行系统调用时阻塞整个系统线程的问题。【1】但goroutine太多仍会导致调度性能下降、GC
Stella981 Stella981
3年前
Python 的效率編程_simplified
!ryxjt(http://static.oschina.net/uploads/img/201604/05163720_HYgo.jpg)!11(http://static.oschina.net/uploads/img/201604/05163720_f03M.jpg)Python说是当今最热门的编程语言之一,相信大家都不会反对。
Stella981 Stella981
3年前
Python使用grequests并发发送请求
\TOC\前言requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快。但是requests发送请求是串行的,即阻塞的。发送完一条请求才能发送另一条请求。为了提升测试效率,一般我们需要并行发送请求。这里可以使用多线程,或者协程,gevent或者aiohttp,然而使用起来,都相对麻烦。greques
Stella981 Stella981
3年前
Golang学习笔记:goroutine
1.goroutinegoroutine是go语言的并发体。在go语言里面能使用go关键字来实现并发。gofunc()1.1概念介绍goroutine本质上是协程,我刚刚学习的时候就粗略地认为goroutine是线程,直到最近才开始搞明白goroutine的基本概念。<fon
Easter79 Easter79
3年前
Swoole2.0协程客户端连接池的实现
Swoole2.0官方默认的实例是短连接的,在请求处理完毕后就会切断redis或mysql的连接。实际项目可以使用连接池实现复用。实现原理也很简单,使用SplQueue,在请求到来时判断资源队列中是否有可用的连接,如果有直接拿来复用。如果没有就创建一个新的连接。在连接使用完毕后再讲它重新放回到队列,此连接就可以被其他协程复用。$count