首页 > 其他分享 >同步-异步思考

同步-异步思考

时间:2024-03-19 13:35:01浏览次数:21  
标签:异步 同步 函数 文件 content 米饭 思考 读取

同步: 一件事情执行结束后, 才能执行下一件事. 

1. 只有一个线程: 

 2. 有两个线程:

 

上面两个模型都是在执行任务 2 的时候, 不会执行任务 3, 等任务 2 执行结束的时候才执行任务 3
伪代码:
main() {
  定义变量 a = 1;
  a = await get_number_two();
  打印 a 的值;
}
async get_number_two() {   sleep_s(10); // 睡眠 10 s   return 2; } 结果: a 的值为 2.

 

异步: 干一件事的时候可以同时干另外一件事.

有点像一个人在用电饭煲煮米饭, 米饭放进去以后, 人就可以去干其他事, 当电饭煲发出滴的一声, 人就知道米饭熟了, 然后可以来处理煮熟的米饭. 

但是我们在代码中如何知道异步中的代码什么时候执行结束呢(米饭什么时候煮熟呢)? 我又如何在异步代码结束以后, 进行下一步处理呢?
答案是回调函数: 我们假设现在有这样一种情况, 我们需要读取一个大文件(读取文件的过程大概需要 3 分钟.), 大文件读取进内存后, 对其中的字符串进行处理. 

// 定义一个读取文件的异步函数,它接收文件名和回调函数作为参数

function readFileAsync(filename, callback) {

  // 模拟异步读取文件操作

  setTimeout(() => { const fileContent = "This is the content of the file.";

  // 假设这是从文件读取的内容

  callback(fileContent);

  // 调用回调函数,并将文件内容作为参数传给它

  }, 1000);

  // 假设文件读取操作耗时1秒

}

 

 

// 定义了一个回调函数用于处理文件内容

function processFileContent(content) {

  console.log("Processing file content:", content);

}

 

// 调用readFileAsync函数,读取文件,并指定processFileContent作为回调函数

readFileAsync("example.txt", processFileContent);

 

标签:异步,同步,函数,文件,content,米饭,思考,读取
From: https://www.cnblogs.com/shuyuanutil/p/18082347

相关文章

  • 基于minn算法的OFDM定时同步matlab仿真
    目录1.MMSE定时同步原理2.minn定时同步原理3.matlab核心程序4.仿真结果正交频分复用(OrthogonalFrequencyDivisionMultiplexing,OFDM)是一种多载波传输技术,通过将高速数据流分解到多个正交子载波上进行传输。在接收端,精确的定时同步对于恢复出高质量的数据至关重要,因为它直......
  • 聊聊大模型微调训练全流程的思考
    转载请注明出处:https://www.cnblogs.com/zhiyong-ITNote参考现有的中文医疗模型:MedicalGPT、CareGPT等领域模型的训练流程,结合ChatGPT的训练流程,总结如下:在预训练阶段,模型会从大量无标注文本数据集中学习领域/通用知识;其次使用{有监督微调}(SFT)优化模型以更好地遵守特定指令;......
  • ZYNQ AXI 片上互联的再思考:AXI GP口/axi lite
    之前笔记:Zynq上的存储器接口与差分时钟与DDR3_zynqddr3-CSDN博客使用AxiLite接口访问寄存器列表作为缓冲区_两个参数共用axilite中一个寄存器-CSDN博客PS与PL互联与SCU以及PG082_pl能不能用ps-gtr-CSDN博客ZYNQ上互联的AXI主要有三种:AXILITEAXIHPAXIACP AXILITE......
  • C#异步编程:原理与实践
    一、引言在现代应用程序开发中,尤其是在涉及I/O操作(如网络请求、文件读写等)时,异步编程成为了提高性能和用户体验的关键技术。C#作为.NET框架下的主流开发语言,提供了强大的异步编程支持,通过async/await关键字,可以让开发者以同步的方式编写异步代码,极大地简化了异步编程的复杂性。本......
  • 异步联邦学习①-FedASMU
    FedASMU:EfficientAsynchronousFederatedLearningwithDynamicStaleness-awareModelUpdate摘要作为一种处理分布式数据的有前途的方法,联合学习近年来取得了重大进展。FL通过利用分散在多个边缘设备中的原始数据来实现协作模型训练。然而,数据通常是非依赖和同分布的,即......
  • 关于进程同步与互斥的一些概念(锁、cas、futex)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  无前言  最近为了实现在androidlinuxkernel上,是的bionicc和glibc的sem_相关的信号量接口能够相互调用的功能(例如:用bioniccwait,用glibcawake),......
  • 2.Datax数据同步之Windows下,mysql和sqlserver之间的自定义sql文数据同步
    目录前言步骤操作大纲步骤明细mysql至sqlServersqlServer至mysql前言上一篇文章实现了不同的mysql数据库之间的数据同步,在此基础上本篇将实现mysql和sqlserver之间的自定义sql文数据同步准备工作:JDK(1.8以上,推荐1.8)Python(2或3都可以)ApacheMaven3.x(Co......
  • 在C#中使用 CancellationToken 处理异步任务
    来源:在C#中使用CancellationToken处理异步任务-知乎(zhihu.com)在.NETCore中使用异步编程已经很普遍了,你在项目中随处可见async和await,它简化了异步操作,允许开发人员,使用同步的方式编写异步代码,你会发现在大部分的异步方法中,都提供了CancellationToken参数,本文主要介......
  • C#异步有多少种实现方式?
    前言微信群里的一个提问引发的这个问题,有同学问:C#异步有多少种实现方式?想要知道C#异步有多少种实现方式,首先我们要知道.NET提供的执行异步操作的三种模式,然后再去了解C#异步实现的方式。.NET异步编程模式.NET提供了执行异步操作的三种模式:基于任务的异步模式(TAP) ......
  • react中setState是同步的还是异步的
    首先说一下setState是同步的还是异步的?1.解读setState工作流 接下来我们就沿着这个流程,逐个在源码中对号入座。首先是setState入口函数:ReactComponent.prototype.setState=function(partialState,callback){this.updater.enqueueSetState(this,partialSta......