电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

电子发烧友网>嵌入式技术>三种Linux中的常用多线程同步方式浅析

三种Linux中的常用多线程同步方式浅析

收藏

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论

查看更多

相关推荐

一文详解Linux线程同步

我们在工作中会经常遇到线程同步,那么到底什么是线程同步呢,线程同步的本质是什么,线程同步的方法又有哪些,为什么会有这些方法呢?在回答这些问题之前,我们先做几个名词解释,以便建立共同的概念基础。
2022-08-25 11:49:43464

Linux系统中线程同步方式中的条件变量方法

今天主要和大家聊一聊,如何使用Linux线程同步方式中的条件变量。
2022-11-08 09:16:13417

详细谈谈Linux中的多线程同步和互斥机制

互斥:多线程中互斥是指多个线程访问同一资源时同时只允许一个线程对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的;
2023-03-20 09:09:251293

Java多线程的用法

本文将介绍一下Java多线程的用法。 基础介绍 什么是多线程 指的是在一个进程中同时运行多个线程,每个线程都可以独立执行不同的任务或操作。 与单线程相比,多线程可以提高程序的并发性和响应
2023-09-30 17:07:00561

Linux Kernel支持NMI的三种方式

了支持NMI的三种方式:使用了 GIC 架构的中断优先级特性。Linux 对特定中断号进行编程,使其其优先级高于所有其他中断。然后重写了arm64特定的中断启用和禁用函数来更改CPU中断优先级掩码
2023-02-07 14:52:39

Linux c多线程编程的4个实例

[table][tr][td]在主流的操作系统,多任务一般都提供了进程和线程实现方式,进程享有独立的进程空间,而线程相对于进程来说是一更加轻量级的多任务并行,多线程之间一般都是共享所在进程
2018-10-17 09:32:16

Linux c多线程编程的4个实例分享

Linux c多线程编程的4个实例  在主流的操作系统,多任务一般都提供了进程和线程实现方式,进程享有独立的进程空间,而线程相对于进程来说是一更加轻量级的多任务并行,多线程之间一般都是共享
2020-06-09 04:35:40

Linux多线程线程同步

的代码段、堆栈段和数据段,这是一"昂贵"的多任务工作方式。而运行于一个进程的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个
2017-12-08 14:14:06

Linux多线程编程手册

Linux多线程编程手册
2016-11-07 10:17:40

Linux多线程机制

时: gcc -o hello hello.c -lpthread //多线程是一个第库函数,所以要加-lpthread  多线程的好处:  要实现 1 接收键盘输入 2 同时每隔一秒钟打印一下
2017-01-10 14:59:47

Linux多线程机制

:让主进程不结束{;}}编译时: gcc -o hello hello.c -lpthread //多线程是一个第库函数,所以要加-lpthread多线程的好处:要实现 1 接收键盘输入 2 同时
2016-11-11 09:53:39

Linux多线程编程总结

最近研究MySQL源码,各种锁,各种互斥,好在我去年认真学了《unix环境高级编程》, 虽然已经忘得差不多了,但是学过始终是学过,拿起来也快。写这篇文章的目的就是总结Linux多线程编程,作为日后的参考资料。
2019-07-23 08:17:14

Linux线程同步方法

Linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。
2019-07-19 07:24:51

linux 下如何获取线程ID

),Linux在早期内核不支持线程的时候glibc就在库(用户态)以纤程(就是用户态线程)的方式支持多线程了,POSIX thread只要求了用户编程的调用接口对内核接口没有要求。linux上的线程实现就是在内核支持的基础上以POSIX thread的方式对外封装了接口,所以才会有两个ID的问题。
2019-07-09 08:36:48

linux多线程常用相关函数简介

,结构的元素分别对应着新线程的运行属性,主要包括以下几项: __detachstate,表示新线程是否与进程其他线程脱离同步,如果置位则新线程不能用pthread_join()来同步,且在退出
2018-06-27 08:36:01

linux线程同步方法

最近研究mysql源码,各种锁,各种互斥,好在我去年认真学了《unix环境高级编程》, 虽然已经忘得差不多了,但是学过始终是学过,拿起来也快。写这篇文章的目的就是总结linux多线程编程,作为日后的参考资料。
2019-08-06 06:15:28

linux多线程编程,一次等待多个信号量怎么解决

linux多线程(非进程)编程,一次等待多个信号量怎么解决?并且等到信号量来了后,能判断是那一个​功能如同window下waitformultipleobjects()函数,一次就可以等待多个信号量。在linux多线程编程,linux 下sem_wait()一次只能等待一个信号量。
2020-06-17 05:55:57

三种常用的嵌入式操作系统是什么

三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同点及各自的适用范围。1 嵌入式系统与嵌入式操作系统1.1
2021-12-22 07:36:58

三种复位方式比较

三种复位方式比较
2012-08-16 17:31:50

多线程的过程程序

1、多线程了解线程之前我们必须要先了解(程序—>进程—>线程)的过程程序:是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。进程:进程指正在运行的程序
2021-08-24 08:28:00

多线程编程之 线程间通讯

多线程编程之 线程间通讯七、线程间通讯  一般而言,应用程序的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种
2008-10-22 11:43:09

多线程编程之一: 问题提出

进行多线程的程序设计,并提供了操作系统原理的各种同步、互斥和临界区等操作。Visual C++ 6.0,使用MFC类库也实现了多线程的程序设计,使得多线程编程更加方便。、Win32 API对多线程
2008-10-22 11:41:12

多线程编程之四 线程同步

只介绍最常用的四:临界区(CCriticalSection) 事件(CEvent) 互斥量(CMutex) 信号量(CSemaphore)  通过这些类,我们可以比较容易地做到线程同步。A
2008-10-22 11:43:42

多线程解决思路一

使用方法节点实现多线程,两个线程之间的数据传输也都使用方法节点的方式实现。1、初始化时打开另一个线程。2、程序运行过程实现对被调线程的实施读写。3、Write data按下后写入对应的指令到被调线程得指令接收端。4、主程序停止时关掉被调线程
2020-07-06 17:21:20

常用的FBAR模型有哪三种?

常用的FBAR模型有哪三种?
2021-03-11 06:16:18

浅析Linux线程概念

首先Linux并不存在真正的线程Linux线程是使用进程模拟的。当我们需要在一个进程同时运行多个执行流时,我们并不可以开辟多个进程执行我们的操作(32位机器里每个进程认为它 独享 4G的内存
2019-07-23 06:10:56

浅析Python使用多线程实现串口收发数据

Python使用多线程实现串口收发数据前言代码最后前言近期要写个串口的代码,想着工程有点大打算用多线程布局…在使用这份代码之前,
2021-08-24 07:49:31

线程同步方式有哪几种?

线程同步方式有哪几种?
2021-05-26 07:13:07

FCC三种认证方式有什么区别

FCC三种认证方式主要是针对不同类别产品。无线、射频类产品必须申请FCC ID,电脑及电脑周边产品需申请FCC DOC或ID,其它产品一般申请FCC VOC即可。三种认证方式中级别ID最高,需TCB
2015-10-22 14:11:47

HAL库UART的三种收发方式是什么?

HAL库UART的三种收发方式是什么?
2022-02-18 06:33:52

Python多线程编程原理

多线程使用方法Python中使用线程有两方式,分别是函数或者用类来包装线程对象。用函数来包装线程对象的方式用函数来包装线程对象的方式是调用thread模块的start_new_thread()函数
2018-11-22 14:01:58

STM32三种BOOT启动方式的设置与应用

如何在不同的下载方式中选择STM32的启动模式呢?STM32三种BOOT启动方式的设置与应用分别是什么?
2022-01-18 07:01:55

STM32三种启动方式是什么

STM32三种启动方式是什么
2021-12-15 07:16:54

STM32实现复位的三种常用方式问题

STM32实现复位的三种常用方式问题:最近做项目碰到单片机程序运行过程,需要根据外部输入信号,对单片机进行复位的操作。解决:目前常用的复位方式有硬件复位和两软件复位:1、硬件复位通过给NRST
2021-08-12 07:23:06

STM32的三种启动方式

STM32的三种启动方式依靠BOOT0和BOOT1两个引脚的电平来决定,ST官方推荐的是串联10k电阻然后在接高电平或接地。我用0R直接接地的,没有串联10k电阻,造成STM32的硬件死机。在实际的应用耽误不少时间,切记!
2021-08-11 06:33:42

TWEN-ASR ONE 语音识别系列教程(4)---多线程与消息队列使用

会发送消息队列,通过消息队列,不同线程间可以相互共享数据。、总结    多线程与消息队列在嵌入式操作系统是很常用的知识。本文简单介绍了多线程与消息队列的使用,在天问Block里面有对应的程序块提供使用,当然
2021-07-02 16:27:40

伺服电机的三种控制方式怎么选

一般伺服都有三种控制方式:速度控制方式,转矩控制方式,位置控制方式。大多数人想知道的就是这三种控制方式具体根据什么来选择的?
2021-01-29 07:28:36

伺服电机的三种控制方式详解

伺服电机的三种控制方式
2021-01-21 06:45:01

伺服的三种控制方式具体根据什么来选择的

伺服有哪几种控制方式?伺服的三种控制方式具体根据什么来选择的?
2021-10-11 08:17:43

减轻信号反射负面影响的三种方式

在高速PCB设计,信号的反射将给PCB的设计质量带来很大的负面影响,而要减轻反射信号的负面影响,有三种方式:  1)降低系统频率从而加大信号的上升与下降时间,使信号在加到传输线上前,前一个信号
2019-06-21 07:45:40

利用线程的互斥实现串口多线程收发数据

利用线程的互斥实现串口多线程收发数据从而达到流水灯的效果。多线程串口编程主要分为步,第一部分,连接串口及开发板,确定设备号;第二部分为串口参数的设置;第部分为多线程数据的收发。下方有完整代码实现
2022-01-07 08:08:26

单片机三种常用的软件架构

一个合适的软件架构不仅结构清晰,而且可以便于开发与维护。便于帮助开发者把握整个工程的框架三种常用的软件架构:1.顺序执行的前后台系统2.时间片轮询系统3.多任务操作系统顺序执行的前后台系统程序以变量
2022-01-07 08:29:54

单片机常用的程序烧写方式有哪些?

单片机常用三种程序烧写方式
2021-03-17 06:35:48

单片机系统中最常用三种通信协议是什么?

单片机系统中最常用三种通信协议是什么?
2022-02-17 06:03:46

在LabVIEW为何要关闭多线程

在LabVIEW为何要关闭多线程在LabVIEW,为何要关闭多线程?解答: 关于关闭多线程存在两个原因:正在使用旧的或者较慢的电脑所用vi程序莫名其妙的崩溃对于一台旧电脑有限的资源而言,多线程
2022-05-08 21:10:29

基于TCP/IP协议的多线程通信的基本方法

本文给出了一在Windows NT下基于TCP/IP协议的多线程通信的基本方法,根据该方法进行修改和扩充,便可设计出符合具体应用的高质量的多线程通信程序。
2021-02-04 07:08:42

如何使用多线程和异步操作等并发设计方法来最大化程序的性能

无暇。编写异步操作的复杂程度较高,程序主要使用回调方式进行处理,与普通人的思维方式有些初入,而且难以调试。  多线程的优缺点  多线程的优点很明显,线程的处理程序依然是顺序执行,符合普通人的思维习惯
2022-08-23 16:31:02

如何利用多线程去构建一TCP并发服务器

TCP并发服务器,并实现客户端和服务器的传输(多个并发用户同时访问服务器)实验原理:TCP的传输模型和线程的并发执行、主要仪器设备PC机、装有Linux操作系统的虚拟机四、...
2021-12-22 08:03:57

如何对Linux系统多线程进行编程呢

Linux系统编程第07期:多线程编程入门 6年嵌入式开发经验,在多家半导体...
2021-12-23 08:08:42

嵌入式Linux多线程编程

嵌入式Linux多线程编程-学习资源-华清远见清远见嵌入式学院:清远见嵌入式学院:《嵌入式应用程序设计》——第5 章 嵌入式Linux 多线程编程第5 章 嵌入式Linux 多线程编程本章
2021-11-05 06:54:35

嵌入式linux的main多线程怎么实现周期性执行?

求助:我有个问题1、嵌入式linux的main多线程怎么实现周期性执行?2、嵌入式linux的main中进程怎么实现周期性执行?3、嵌入式linux的main中有没有触发性的线程或者进程?希望那个大神给解答一下!谢谢
2014-03-03 11:27:12

常见的三种无线接入方式是什么?

蓝牙无线组网的优点是什么?常见的三种无线接入方式是什么?蓝牙无线组网原理与上网方案分享
2021-05-26 06:33:11

步进电机的三种驱动方式

步进电机的三种驱动方式
2016-01-12 17:03:44

浅谈基于Linux操作系统多线程同步原理及应用

和PTHREAD_PROCESS_SHARED。前者用来不同进程线程同步,后者用于同步本进程的不同线程。在上面的例子,使用的是默认属性PTHREAD_PROCESS_ PRIVATE。后者用来设置互斥锁类型,可选的类型有
2012-02-02 14:49:46

浅谈多进程多线程的选择

鱼还是熊掌:浅谈多进程多线程的选择关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作遇到类似的选择
2021-08-24 07:38:57

编译的三种类型是什么?

编译的三种类型是什么?ARM_Linux制作嵌入式远程调试工具
2021-12-24 06:42:58

请问stm32启动的三种方式是什么意思?

请群主详细解释下这三种启动方式,看了参考资料不是很明白其意!谢谢!
2019-07-17 04:35:12

QNX环境下多线程编程

介绍了QNX 实时操作系统和多线程编程技术,包括线程同步的方法、多线程程序的分析步骤、线程基本程序结构以及实用编译方法。QNX 是由加拿大QNX 软件有限系统公司开发的
2009-08-12 17:37:1930

LINUX系统下多线程与多进程性能分析

采用多进程处理多个任务,会占用很多系统资源(主要是CPU 和内存的使用)。在LINUX 中,则对这种弊端进行了改进,在用户态实现了多线程处理多任务。本文系统论述了多线程
2009-08-13 08:31:1520

linux多线程编程课件

电子发烧友为您提供了linux多线程编程课件,希望对您学习 linux 有所帮助。部分内容如下: *1、多线程模型在单处理器模型和多处理器系统上,都能改善响应时间和吞吐量。 *2、线程
2011-07-10 11:58:430

Linux多线程同步方法

线程对共享相同内存操作时,就会出现多个线程对同一资源的使用,为此,需要对这些线程进行同步,以确保它们在访问共享内存的时候不会访问到无效的数值。
2011-08-08 14:17:161946

Win32多线程同步技术浅析

简要介绍了在Win32环境下多线程访问共享资源时的同步机制,讨论了主要的4种同步对象(临界区、互斥元、事件、信号量),并描述了它们的优缺点,给出了使用Win32 API函数操控这4种对
2011-11-14 10:55:5431

linux多线程编程开发

本文中我们针对 Linux多线程编程的主要特性总结出 5 条经验,用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中,我们穿插一些 Windows 的编程用例用以对比 Linux 特性
2011-12-26 14:24:4455

改进的多线程应用程序调试(Altium Designer版本10)

Altium Designer 版本10的发布为POSIX多线程库的支持带来了一系列改进 允许多线程应用程序以一种直观流畅的方式调试。 线程 命名 在一个多线程应用程序中支持的线程的最大数量介于8和
2012-05-15 12:49:511218

Linux多线程的视频图像平滑度评价算法_饶鸿

Linux多线程的视频图像平滑度评价算法_饶鸿
2017-03-19 11:27:340

多线程与聊天室程序的创建

多线程程序的编写,多线程应用中容易出现的问题。互斥对象的讲解,如何采用互斥对象来实现多线程同步。如何利用命名互斥对象保证应用程序只有一个实例运行。应用多线程编写网络聊天室程序。
2017-05-16 15:22:530

设计多线程和多核系统

如果您的微控制器应用程序需要处理数字音频,请考虑采用多线程方法。使用多线程设计方法可以使设计者以简单的方式重用其部分设计。
2017-08-14 15:42:129

java多线程同步方法

操作,一个取100块,一个存钱100块。假设账户原本有0块,如果取钱线程和存钱线程同时发生,会出现什么结果呢?取钱不成功,账户余额是100.取钱成功了,账户余额是0.那到底是哪个呢?很难说清楚。因此多线程同步就是要解决这个
2017-09-27 13:19:400

多线程编程之Linux线程编程

9.2 Linux线程编程 9.2.1 线程基本编程 这里要讲的线程相关操作都是用户空间中的线程的操作。在Linux中,一般pthread线程库是一套通用的线程库,是由POSIX提出的,因此具有很好
2017-10-18 15:55:263

linux多线程编程技术

(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。 使
2017-10-24 16:01:395

多线程好还是单线程好?单线程多线程的区别 优缺点分析

摘要:如今单线程多线程已经得到普遍运用,那么到底多线程好还是单线程好呢?单线程多线程的区别又是什么呢?下面我们来看看它们的区别以及优缺点分析。
2017-12-08 09:33:1579710

什么是多线程编程?多线程编程基础知识

摘要:多线程编程是现代软件技术中很重要的一个环节。要弄懂多线程,这就要牵涉到多进程。本文主要以多线程编程以及多线程编程相关知识而做出的一些结论。
2017-12-08 16:30:0811929

多线程服务器编程模型:如何正确使用mutex 和condition variable

本文对多线程服务器的常用编程模型进行了一个详细的解读,本文中的多线程服务器是运行在 Linux 操作系统上网络应用程序。介绍了典型的单线程服务器编程模型和典型的多线程服务器的线程模型以及进程间通信与线程间通信等相关内容。
2018-02-19 08:29:006891

关于Linux多线程编程技术学习总结

Linux多线程编程技术 作为一个IT人员,不断的学习和总结是我们这个职业习惯,所以我会将每个阶段的学习都会通过一点的总结来记录和检测自己的学习效果,今天为大家总结了关于Linux多线程编程技术。
2018-04-22 03:12:022051

C#多线程技术

C#和.NET类库为开发多线程应用程序提供了很方便的支持,本章首先简要介绍.NET类库中的Thread类及各种线程支持,再通过示例说明线程使用中需要掌握的规则,最后论述线程同步时出现的问题。 多线程
2018-04-23 11:32:0514

了解Linux多线程线程同步

进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
2019-04-23 14:23:01605

Linux 多线程可重入函数

在单线程程序中,整个程序都是顺序执行的,一个函数在同一时刻只能被一个函数调用,但在多线程中,由于并发性,一个函数可能同时被多个函数调用,此时这个函数就成了临界资源,很容易造成调用函数处理结果
2019-05-16 17:41:58813

linux多线程机制-线程同步

,线程调度、同步与互斥都需要用户程序自己完成。内核级线程需要内核参与,由内核完成线 程调度并提供相应的系统调用,用户程序可以通过这些接口函数对线程进行一定的控制和管理。Linux操作系统提供
2019-04-02 14:42:43329

Linux下的多线程编程

线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。  使用多线程的理由之一是和进程相比,它是一种非常"节俭"的多任务操作方式。我们知道,在Linux系统下,启动
2019-04-02 14:43:07465

Linux多线程编程的高效开发

多线程开发在 Linux 平台上已经有成熟的 Pthread 库支持。其涉及的多线程开发的最基本概念主要包含三点:线程,互斥锁,条件。其中,线程操作又分线程的创建,退出,等待
2019-04-02 14:45:11227

Linux多线程同步

典型的UNIX系统都支持一个进程创建多个线程(thread)。在Linux进程基础中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它
2019-04-02 14:47:58316

嵌入式linux多线程编程实验,嵌入式Linux多线程编程-学习资源-华清远见.PDF

嵌入式Linux多线程编程-学习资源-华清远见清远见嵌入式学院:清远见嵌入式学院:《嵌入式应用程序设计》——第5 章 嵌入式Linux 多线程编程第5 章 嵌入式Linux 多线程编程本章
2021-11-02 13:36:167

Java多线程永动任务 多线程异步任务项目解读

1. 功能说明 2. 多线程任务示例 2.1 线程池 2.2 单个任务 2.3 任务入口 2.4 结果分析 2.5 源码地址 3. 写在最后 大家好,今天教大家撸一个 Java 的多线程永动任务
2022-10-19 11:46:28753

SpringBoot实现多线程

SpringBoot实现多线程
2023-01-12 16:59:221241

Linux多线程编程的知识点

Hello、Hello大家好,我是木荣,今天我们继续来聊一聊Linux多线程编程中的重要知识点,详细谈谈多线程同步和互斥机制。
2023-04-26 17:27:44466

浅谈Linux网络编程中的多进程和多线程

Linux网络编程中,我们应该见过很多网络框架或者server,有多进程的处理方式,也有多线程处理方式,孰好孰坏并没有可比性,首先选择多进程还是多线程我们需要考虑业务场景,其次结合当前部署环境,是云原生还是传统的IDC等,最后考虑可维护性,其具体的对比在第三部分具体会展开说。
2023-08-08 16:56:16371

labview AMC多线程

labview_AMC多线程
2023-08-21 10:31:4420

如何使用pthread_barrier_xxx系列函数来实现多线程之间的同步

Linux系统中提供了多种同步机制,本文主要讲讲如何使用pthread_barrier_xxx系列函数来实现多线程之间进行同步的方法。
2023-10-23 14:43:06237

多线程同步的几种方法

多线程同步是指在多个线程并发执行的情况下,为了保证线程执行的正确性和一致性,需要采用特定的方法来协调线程之间的执行顺序和共享资源的访问。下面将介绍几种常见的多线程同步方法。 互斥锁(Mutex
2023-11-17 14:16:19412

多线程如何保证数据的同步

多线程编程是一种并发编程的方法,意味着程序中同时运行多个线程,每个线程可独立执行不同的任务,共享同一份数据。由于多线程并发执行的特点,会引发数据同步的问题,即保证多个线程对共享数据的访问顺序和正确性
2023-11-17 14:22:09240

mfc多线程编程实例

(图形用户界面)应用程序的开发。在这篇文章中,我们将重点介绍MFC中的多线程编程。 多线程编程在软件开发中非常重要,它可以实现程序的并发执行,提高程序的效率和响应速度。MFC提供了丰富的多线程支持,可以轻松地实现多线程编程,并解决线程间的同步和通信问题。 首先,让我们看一个简单的MFC多线程
2023-12-01 14:29:20400

linux多线程编程实例

linux线程
2024-02-15 21:16:3513

java实现多线程的几种方式

Java实现多线程的几种方式 多线程是指程序中包含了两个或以上的线程,每个线程都可以并行执行不同的任务或操作。Java中的多线程可以提高程序的效率和性能,使得程序可以同时处理多个任务。 Java提供
2024-03-14 16:55:0299

已全部加载完成