BR 技术头条
ad www.addesp.com / 2023-12-11 23:16 / by @技术头条

协程和线程的历史

昨天运营商线路出了问题,体验了一把电话线拨号上网一样的网速。

打开浏览器是这样的场景:
先白屏一会儿。
逐渐显示出网页上的全部文字。
卡一会儿。
慢慢地把网页上的所有图片显示出来。

正在无聊地等待网页加载的时候阴差阳错地意识到浏览器这种一边渲染一边下载的工作方式在历史上还促成了协程和线程这一概念的产生。那么就来讲一讲故事吧。

发表评论

相关分享

cr crossoverjie.top / 2024-08-06 08:05

OpenTelemetry 实践指南:历史、架构与基本概念

本文介绍了OpenTelemetry的历史、架构和基本概念。OpenTelemetry是一个用于统一日志、指标和链路追踪的开源项目,旨在简化可观测性技术栈的复杂性。文章详细介绍了OpenTelemetry的三个核心组件:客户端、OTel Collector和数据存储。通过标准化协议,OpenTelemetry实现了与多种后端系统的兼容,为开发者提供了一种灵活且可扩展的可观测性解决方案。

无图
co www.codedump.info / 2024-03-13 13:33

服务调用的演进历史

这个题目稍微有点大,纯粹是一篇科普文,将我所了解到的解决“服务调用”相关的技术演进历史简述一下,本文专注于演化过程中每一步的为什么(Why)和是什么(What)上面,尽量不在技术细节(How)上面做太多深入。

无图
co colobu.com / 2023-12-11 23:04

Go单线程运行也会有并发问题

一个Go大佬群中严肃的讨论了一个问题:Go程序单线程多goroutine访问一个map会遇到并发读写panic么?

答案是肯定的,因为出现了这个问题所以大家才在群中讨论。

为什么呢?因为单线程意味着并行单元只有一个(多线程也可能并行单元只有一个),但是多goroutine意味着并发单元有多个,如果并发单元同时执行,即使是单线程,可能就会产生数据竞争的问题,除非这些goroutine是顺序执行的。

无图
li linux.cn / 2023-11-06 22:43

开源与 “半开源” 之间的战争和软件的历史一样久远

你是否知道 macOS 曾经是开源的?确实,它曾经是。

macOS 的核心基于 Darwin,这是一种 Unix 操作系统。史蒂夫·乔布斯Steve Jobs 回归苹果公司时,引入了他的基于 Unix 的 NeXTStep 操作系统。到了 2000 年,苹果公司逐步放弃了他们的经典 Mac 操作系统,转而支持 macOS Darwin。除了来自 NeXTStep 的部分,Darwin 还大量借鉴了开源的 FreeBSD 和 Mach 操作系统的设计。

无图
li linux.cn / 2022-09-13 23:30

Unix 历史:一个伟大作品的诞生

本文是关于 Unix 及其起源的简短回忆。

Unix 是少数具有独到思想并致力于解决问题的人取得的非凡成就。如果考虑到在创建操作系统当时可用的计算能力和内存量,这个操作系统简直就是一件艺术品。

几十年来,所有这些一步步的进步,最终使我们走到了今天。无论有多少内核、操作系统和以编程语言形式出现的抽象概念,就其本质而言,它们都始于一个单一的来源。

我一直认为程序或代码是人类的思想,是你的逻辑、想法,只是写在 “IF-ELSE” 语句中,以实现一些现实世界的结果。

无图
te tech.meituan.com / 2022-08-31 23:16

Java线程池实现原理及其在美团业务中的实践

本文开篇简述线程池概念和用途,接着结合线程池的源码,帮助读者领略线程池的设计思路,最后回归实践,通过案例讲述使用线程池遇到的问题,并给出了一种动态化线程池解决方案。

无图
te tech.meituan.com / 2022-08-18 23:32

日志导致线程Block的这些坑,你不得不防

研发人员在项目开发中不可避免地要使用日志,通过它来记录信息和排查问题。Apache Log4j2提供了灵活且强大的日志框架,虽然上手比较快,但稍有不慎也非常容易踩“坑”。本文介绍了美团统一API网关服务Shepherd在实践中所踩过的关于日志导致线程Block的那些“坑”,以及我们如何从日志框架源码层面进行分析和解决问题的过程,并在最后给大家分享一些关于日志避“坑”的实践经验,希望能给大家带来一些帮助。

无图
dr droidyue.com / 2022-08-01 00:03

谁动了我的奶酪,通过 git 找出内容变更历史

在日常的开发过程中,一段代码内容被添加,删除都是稀疏平常的事情。这也就造成了我们日常开发工作中会遇到这样两个问题:
1、这个代码内容是谁添加的,是一直存在还是被修改过多次;
2、有一段代码被删除了,是谁删除的呢。

无图
an androidperformance.com / 2022-06-19 22:47

Systrace 线程 CPU 运行状态分析技巧 - Sleep 和 Uninterruptible Sleep 篇

本文是 Systrace 线程 CPU 运行状态分析技巧系列的第三篇,本文主要讲了使用 Systrace 分析 CPU 状态时遇到的 Sleep 与 Uninterruptible Sleep 状态的原因排查方法与优化方法,这两个状态导致性能变差概率非常高,而且排查起来也比较费劲,网上也没有系统化的文档。

无图