首先,在计算机科学中 routine 被定义为一系列的操作,多个 routine 的执行形成一个父子关系,并且子 routine 一定会在父 routine 结束前结束,也就是一个个的函数执行和嵌套执行形成了父子关系。 coroutine 也是广义上的 routine,不同的是 coroutine 能够通
前言 准确的度量系统的开销是很重要的, 系统级别比较出名的是 Latency Numbers Every Programmer Should Know, 而在各种变成语言中, 需要依赖基准测试来判断程序实际的耗时。 Latency Comparison Numbers (~2012) ---------------------------------- L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns 14x L1 cache Mutex lock/unlock 25 ns Main memory reference 100 ns 20x L2 cache, 200x L1 cache
内存不符预期的不断上涨,可能的原因是内存泄漏,例如new出来的对象未进行delete就重新进行复制,使得之前分配的内存块被悬空,应用程序没办法访问到那部分内存,并且也没有办法释放;在C++中,STL容
异步请求过程 在利用异步gRPC实现请求的时候,通常使用gRPC example中的greeter_async_client2.cc作为模板发起异步请求,并通过CompletionQueue中的Next(
前言 因为前段时间把6.824的lab3做完了,但是lab内部是用channel mock了一个简单的网络来测试网络丢包,网络分区等问题,也就是说跑在单机上面,其rpc也是通过channel和反射实现。目
强一致性Key/Value服务 其实在写完Raft后,K/V的接口已经比较明显了,只需要将操作写入Raft entry的Command内,然后等待Raft的同步,再应用到状态机(例如map[string]
80386 下的保护模式划为5个部分: 类型检查 界限检查 可寻址域的限制 过程调用的限制 指令集的限制 事实上按照段页机制又需要分为段机制下的保护和页机制下的保护。 段级别的保护 段描述符中存储了保护参数,当段描述符到段寄存
最近这段时间有一些空闲时间,可以开始做下6.824,目前是Spring 2018,最新的2019也快出了,提前刷下notes和paper。 分布式系统是关于多个计算机系统共同合作并且进行存储大量的网站数据
goroutine部分 goroutine的一些tricks,比如 func Announce(message string, delay time.Duration) { go func() { time.Sleep(delay) fmt.Println(message) }() // 注意括号 - 必须调用该函数。 } 直接在go关键字后面接一个lambada表达式作为例程。 goroutine通常和c
这篇文章是针对APUE习题11-2的writeup,进程在开启线程后,不同线程需要完成不同的工作,然后在运行中可能引用同一个元素,举一个例子,当多个线程创建后,需要从消息队列中获取一个作业信息的结构体