线程并发:指的是任务数多余cpu核数,通过操作系统各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务速度相当快,看上去一起执行而已)并行:指的是任务数小于等于cpu核数,即任务真的是一起执行  多线程之间共享全局变量在一个进程内所有线程共享全局变量,很方便在多个线程间共享数据缺点就是,线程是对全局变量随意更改可能造成多线程之间对全局变量混乱(即线程非安
# Android 网络封装 ![Pie Chart](chart.png) ## 引言 在Android开发中,网络请求是一个常见需求。而在网络请求中,处理异步操作和线程切换是非常繁琐。为了解决这个问题,Google在Kotlin语言中引入了(Coroutines)概念。是一种轻量级线程,可以简化异步编程复杂性。本文将介绍如何使用封装网络请求。 ## 介绍
原创 2023-11-18 14:40:12
140阅读
这篇是许久之前初学程之时整理笔记,今天偶然翻到便整理成md发出来。现在我真的越来越难总结出这么多又臭又长东西了。定义官方描述:通过将复杂性放入库来简化异步编程。程序逻辑可以在中顺序地表达,而底层库会为我们解决其异步性。该库可以将用户代码相关部分包装为回调、订阅相关事件、在不同线程(甚至不同机器)上调度执行,而代码则保持如同顺序执行一样简单。与线程区别是编译器级别的
作用域与上下文作用域本质是一个接口,既然是一个接口,那么它就可以被某个类去实现(implement),实现它那个类,也就具备了一些能力。class MyClass: CoroutineScope { // MyClass就具备了CoroutineScope一些能力 }那么它具备了哪些能力呢?当然是启动能力和停止能力。除了runBlocking有一些特殊外,launch和
本系列文章Android(第一部分):了解背景Android(第二部分):入门Android (第三部分): 实际应用Android(第二部分):入门背景回顾在第一部分中,我们探讨了擅长解决问题。回顾一下,是解决两个常见编程问题好方法:长时间运行任务是花费太长时间阻塞主线程任务。Main-safety允许您确保可以从主线程调用任何挂起函数。 为
转载 2023-07-05 12:11:54
268阅读
文章目录golang常用库之-ants包 | golang池(goroutine池)背景什么是ants? 使用demo官方demo golang常用库之-ants包 | golang池(goroutine池)背景使用go关键字就可以方便快捷创建一个goroutine,受限于服务器硬件内存大小,如果不对goroutine数量进行限制,会出现Out of Memory错误。通过池限制g
转载 2024-01-03 09:55:43
76阅读
之前介绍了修改sdk后代码大体架构,其实修改代码倒不是什么麻烦事,无非实现一种新功能,下面说说真正让人抓狂事——封装和集成sdk。sdk打包首先要打包,如果是纯代码sdk导出成jar包就行了;像我这样sdk里还包含图片资源要打包aar。编译成功用gradle直接打包成release包: 模块名称为downloadsdk,生成aar就在download/build/output/aar路
转载 2023-07-01 17:36:33
74阅读
最近业余时间在写一个小游戏。在为客户端封装socket层时头脑一热,有了一些新想法, 在这里记录一下。 客户端使用是Unity3d引擎。而在Unity3d中,基础socket库只提供两种模式,一种是阻塞模式,一种是异步callback模式。 一般都需要基于这两种模式下进一步封装,才可以更方便使用。 咨询了几个做客户端并搜了一下,发现大家惯用手法都是开一个线程去使用socket阻
是一种解决方案,是一种解决嵌套,并发、弱化线程概念方案。能让多个任务之间更好协作,能够以同步方式编排代码完成异步工作,将异步代码写像同步代码一样直观。重点 本质是方法挂起与恢复:return + callback是什么:是可以由程序自行控制挂起、恢复程序可以实现多任务协作执行可以用来解决异步任务控制流灵活转移作用:可以让异步代码同步化
转载 2023-07-03 21:27:19
2063阅读
文章目录目的例子原始形式改造回调优化:并行处理事件流 目的用起来很方便,可以将异步代码完全平铺开,写成和同步一样代码形式。但很多时候,很多方法是以回调形式给出,所以处理起来依旧不够优雅。 本篇文章目的就是解决这个问题。例子原始形式以OkHttp为例,OkHttp就是以回调形式给出网络请求结果。通常我们写法如下:/** * 原始写法 */ privat
转载 2024-04-23 11:20:30
117阅读
官网介绍:https://developer.android.com/kotlin/coroutines一、概念(Coroutines)是一种并发设计模式,可以在 Android 平台上使用它来简化异步执行代码。 是在版本 1.3 中添加到 Kotlin ,它基于来自其他语言既定概念。在 Android 上,有助于管理长时间运行任务.二、特点是在 Android
转载 2023-09-11 21:44:05
170阅读
优缺点 文章目录优缺点模型出现原因优势注意 模型现有的调度模型大多是N:M,意思就是每个线程下可以运行多个协,而且线程也可以有多个。为了调度,又可以有有栈和无栈。在Linux下通常是利用ucontext_t实现,Boost也有一个context库可以作为实现基础(据说Boost实现更快,本人未证实)。虽然一个线程下可以运行多个协,但是同一线程下不能有
转载 2024-02-25 11:00:53
58阅读
Android系统中本身是有下载机制,比如浏览器使用DownloadManager。可遗憾是,DownloadManager只提供给浏览器使用,一般应用程序没法调用它。 另外,如果下载调用频繁的话,使用DownloadManager其实是很没有效率做法。为了解决这些问题,我想我们最好办法就是自己实现下载,本文就是基于HTTP协议下载一些简单介绍。 一、HTTP协议简介 HTTP
转载 2023-07-14 11:00:36
56阅读
一:是什么?基于线程,是轻量级线程 coroutine = cooperation+routine 难度在哪里? 1,java中不曾出现,新概念 2,概念不清晰 3,Kotlin基础不扎实 4,多线程基础太薄弱二:在android用来解决什么问题?1,处理耗时任务,这种任务常常会阻塞主线程 2,保证主线程安全,确保安全从主线程调用任何suspend函数(挂起函数) 异步任务已经过
转载 2023-12-20 17:35:55
130阅读
前言大家好,我是小益!在上章内容中,我们简单了解了什么是以及基本使用,主要提到了launch与withContext用法。但是launch与withContext并不适合用于需要返回结果并发场景,在并发场景中,我们一般会使用async/await。推荐文章将率先在公众号「Code满满」上发布,欢迎大家关注!一、async与awiatasync单单从字面意思理解就知道其与异步
转载 2023-07-28 00:03:15
257阅读
什么是?百度上一大堆,随时可以查。我认为就是微线程,比线程还要小。为什么要引入?我们发现在线程使用中,有一个GIL锁,线程之间访问临界资源是互斥,这都是不利于提升代码执行效率。我们知道线程是CPU调度最小单位,如果我们有一个线程,线程内包含多个协程之间来回切换就设计不到CPU切换,就会减小很多不必要开销。和线程相比,切换是由代码关键字完成,代码自由度要高一些。
1. 概念,又称微线程,纤,英文名Coroutine。作用,是在执行函数A时,可以随时中断, 去执行函数B,然后中断继续执行函数A(可以自由切换)。但这一过程并不是函数调用(没有调 用语句),这一整个过程看似像多线程,然而只有一个线程执行。2. 优势- 执行效率极高,因为子程序切换(函数)不是线程切换,由程序自身控制, 没有切换线程开销。所以与多线程相比,线程数量越多,
转载 2024-04-11 09:19:11
54阅读
基础知识概念也可以被称为微线程,是一种用户态内上下文切换技术。简而言之,就是通过一个线程实现代码块相互切换。与线程不同不是计算机提供,而是程序员人为创造。线程和进程是由计算机操作系统提供与多线程区别:多线程运行时:保证只有一个线程在运行,其他线程等待调度。这是python GIL锁导致,会浪费一些资源开销。运行时:在一个线程中运行多个任务,任务与任务之间来回
# Python 封装任务指南 在现代 Python 开发中,是一种高效并发编程方式,能够让你轻松处理异步任务。对于刚入行小白来说,理解如何封装任务并使用是一个重要技能。本文将带你一步步实现这一过程。 ## 流程概述 下面是实现 Python 封装任务步骤流程表: | 步骤 | 描述 | |------|-
原创 10月前
16阅读
本篇blog将讲述coroutine一些背景知识,以及在Java中如何使用Coroutine,包括一个简单benchmark对比,希望能借助这篇blog让大家了解到更多在java中使用coroutine方法,本篇blogPDF版本可从此下载:http://www.bluedavy.com/open/UseCoroutineInJava.pdf 在讲到具体内容之前,不能不先讲下 Coro
转载 2023-08-03 15:07:45
136阅读
  • 1
  • 2
  • 3
  • 4
  • 5