以下是线程的几种同步方式:
1、 互斥量。
通过使用pthread的互斥接口保护数据,确保同一时间只有一个线程访问数据。互斥量从本质上讲是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。如下例所示,就是互斥量对共享数据的操作:
#include
#include
int value = 5;//共享变量
pthread_mutex_t mutex;//互斥变量
void *mythread1();
void mainshow();
int main()
{
int retval;
pthread_t tid1;
retval = pthread_create(&tid1,NULL,mythread1,&value);//创建线程
if(retval != 0){printf(“Can not create mythread1\n”);
mainshow();
retval = pthread_join(&tid1,NULL);//等待线程mythread1结束
if(retval != 0){printf(“Can not join with mythread.\n”);
printf(“value = %d\n”,value);
return 0;
}
void *mythread1()
{
int retval;
retval = pthread_mutex_lock(&mutex);//上锁
value = value + 1;//对共享变量的操作
printf("value = %d\n",value);
retval = pthread_mutex_unlock(&mutex);//解锁
pthread_exit((void *)0);
}
void myshow()
{
int retval;
retval = pthread_mutex_lock(&mutex);//上锁
value = value + 1;//对共享变量的操作
printf(“value = %d\n”,value);
pthread_mutex_unlock(&mutex);//解锁
}
2、信号量
该信号量是Posix提供的基于内存的信号量,它们由应用程序分配信号量的内存空间。如下例所示,就是信号量对共享数据的操作:
#include
#include
#include
int value = 5;
sem_t sem1,sem2;
void mainshow();
void *mythread();
int main()
{
int retval;
pthread_t tid;
retval = sem_init(&sem1,0,0);
retval = sem_init(&sem2,0,1);
retval =pthread_create(&tid,NULL,mythread,NULL);
mainshow();
pthread_join(tid,NULL);
printf("value3 = %d\n",value);
return 0;
}
void *mythread()
{
int retval;
retval = sem_wait(&sem1);
value = value + 1;
printf("value1 = %d\n",value);
retval = sem_post(&sem2);
pthread_exit((void *) 0);
}
void mainshow()
{
int retval;
retval = sem_wait(&sem2);
value = value + 1;
printf("value2 = %d\n",value);
retval = sem_post(&sem1);
}
Linux多线程同步方法
- Linux(206514)
- 多线程同步(5207)
相关推荐
一文详解Linux线程同步
我们在工作中会经常遇到线程同步,那么到底什么是线程同步呢,线程同步的本质是什么,线程同步的方法又有哪些,为什么会有这些方法呢?在回答这些问题之前,我们先做几个名词解释,以便建立共同的概念基础。
2022-08-25 11:49:43464
详细谈谈Linux中的多线程同步和互斥机制
互斥:多线程中互斥是指多个线程访问同一资源时同时只允许一个线程对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的;
2023-03-20 09:09:251293
Linux多线程编程基础知识解析
线程是轻量级的进程(`LWP: Light Weight Process`),在`Linux`环境下线程的本质仍是`进程`,进程是资源分配的`最小单位`,线程是操作系统调度执行的`最小单位`。
2023-07-14 16:41:43450
Rust的多线程编程概念和使用方法
和字段、常见用法以及多线程的一些实践经验。由浅入深带你零基础玩转Rust的多线程编程。 线程的基本概念和使用方法 Thread是Rust中并发编程的一种基本方式。Rust中的Thread使用标准
2023-09-20 11:15:51407
Java多线程的用法
本文将介绍一下Java多线程的用法。 基础介绍 什么是多线程 指的是在一个进程中同时运行多个线程,每个线程都可以独立执行不同的任务或操作。 与单线程相比,多线程可以提高程序的并发性和响应
2023-09-30 17:07:00561
Linux c多线程编程的4个实例
Linux中最流行的线程机制为LinuxThreads,下面以一个多线程编程实例来介绍该线程库的编程接口: 示例1:线程的创建和退出,等待线程结束和获取线程的返回值 #include
2018-10-17 09:32:16
Linux c多线程编程的4个实例分享
Linux c多线程编程的4个实例 在主流的操作系统中,多任务一般都提供了进程和线程两种实现方式,进程享有独立的进程空间,而线程相对于进程来说是一种更加轻量级的多任务并行,多线程之间一般都是共享
2020-06-09 04:35:40
Linux多线程及线程间同步
。同一进程内的线程共享进程的地址空间。通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。调度和切换:线程上下文切换比进程
2017-12-08 14:14:06
Linux下多线程机制
1 线程不能独立运行,要依附于进程2 如果创建一个子线程只需要重新分配栈空间3 多个线程可以并行运行4 线程之间可以有共同的全局变量(全局区,任何线程都可以访问)5 多线程效率高如何创建子线程(在
2016-11-11 09:53:39
Linux下多线程机制
1 线程不能独立运行,要依附于进程 2 如果创建一个子线程只需要重新分配栈空间 3 多个线程可以并行运行 4 线程之间可以有共同的全局变量(全局区, 任何线程都可以访问) 5 多线程效率高
2017-01-10 14:59:47
Linux下多线程编程总结
最近研究MySQL源码,各种锁,各种互斥,好在我去年认真学了《unix环境高级编程》, 虽然已经忘得差不多了,但是学过始终是学过,拿起来也快。写这篇文章的目的就是总结Linux 下多线程编程,作为日后的参考资料。
2019-07-23 08:17:14
linux 下如何获取线程ID
linux多线程环境下gettid() pthread_self() 两个函数都获得线程ID,但这2个ID有所不同gettid是内核中的线程的ID:POSIX thread ID可以在一个进程内唯一
2019-07-09 08:36:48
linux线程同步方法
最近研究mysql源码,各种锁,各种互斥,好在我去年认真学了《unix环境高级编程》, 虽然已经忘得差不多了,但是学过始终是学过,拿起来也快。写这篇文章的目的就是总结linux 下多线程编程,作为日后的参考资料。
2019-08-06 06:15:28
linux下多线程编程中,一次等待多个信号量怎么解决
linux下多线程(非进程)编程中,一次等待多个信号量怎么解决?并且等到信号量来了后,能判断是那一个功能如同window下waitformultipleobjects()函数,一次就可以等待多个信号量。在linux下多线程编程,linux 下sem_wait()一次只能等待一个信号量。
2020-06-17 05:55:57
多线程同步和互斥有几种实现方法
线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排
2019-08-05 06:06:39
多线程的过程程序
1、多线程了解线程之前我们必须要先了解(程序—>进程—>线程)的过程程序:是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。进程:进程指正在运行的程序
2021-08-24 08:28:00
多线程编程之一: 问题提出
进行多线程的程序设计,并提供了操作系统原理中的各种同步、互斥和临界区等操作。Visual C++ 6.0中,使用MFC类库也实现了多线程的程序设计,使得多线程编程更加方便。三、Win32 API对多线程
2008-10-22 11:41:12
多线程编程之四 线程的同步
多线程编程之四 线程的同步八、线程的同步 虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度
2008-10-22 11:43:42
多线程解决思路一
使用方法节点实现多线程,两个线程之间的数据传输也都使用方法节点的方式实现。1、初始化时打开另一个线程。2、程序运行过程中实现对被调线程的实施读写。3、Write data按下后写入对应的指令到被调线程得指令接收端。4、主程序停止时关掉被调线程。
2020-07-06 17:21:20
LabView的多线程语言
LabView的多线程语言以前只会照猫画虎的写一些简单的程序,一些基本原理不是很清晰。从网上找了一些资料,这里总结一下。1。一般情况下,运行一个 VI,至少有两个线程:一个界面线程(UI
2009-06-08 10:13:49
Micropython STM32添加多线程功能
Micropython 官方下载的代码默认未开启多线程支持,可用以下方法: Micropython添加多线程功能的STM32目录下mpconfigport.h中 #define MICROPY_PY_THREAD (1)...
2021-08-24 06:08:03
Python多线程编程原理
多线程使用方法Python中使用线程有两种方式,分别是函数或者用类来包装线程对象。用函数来包装线程对象的方式用函数来包装线程对象的方式是调用thread模块中的start_new_thread()函数
2018-11-22 14:01:58
python创建多线程的两种方法
1. 用函数创建多线程在Python3中,Python提供了一个内置模块 threading.Thread,可以很方便地让我们创建多线程。threading.Thread() 一般接收两个参数:线程
2022-03-15 16:47:32
利用线程的互斥实现串口多线程收发数据
利用线程的互斥实现串口多线程收发数据从而达到流水灯的效果。多线程串口编程主要分为三步,第一部分,连接串口及开发板,确定设备号;第二部分为串口参数的设置;第三部分为多线程数据的收发。下方有完整代码实现
2022-01-07 08:08:26
基于TCP/IP协议的多线程通信的基本方法
本文给出了一种在Windows NT下基于TCP/IP协议的多线程通信的基本方法,根据该方法进行修改和扩充,便可设计出符合具体应用的高质量的多线程通信程序。
2021-02-04 07:08:42
如何使用多线程和异步操作等并发设计方法来最大化程序的性能
异步与多线程的区别 一、异步和多线程有什么区别?其实,异步是目的,而多线程是实现这个目的的方法。异步是说,A发起一个操作后(一般都是比较耗时的操作,如果不耗时的操作就没有必要异步了),可以继续
2022-08-23 16:31:02
嵌入式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
浅析Linux线程概念
首先Linux并不存在真正的线程,Linux的线程是使用进程模拟的。当我们需要在一个进程中同时运行多个执行流时,我们并不可以开辟多个进程执行我们的操作(32位机器里每个进程认为它 独享 4G的内存
2019-07-23 06:10:56
浅谈多进程多线程的选择
问题,那就没有这么简单了,选的不好,会让你深受其害。 经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好。根据实际...
2021-08-24 07:38:57
QNX环境下多线程编程
介绍了QNX 实时操作系统和多线程编程技术,包括线程间同步的方法、多线程程序的分析步骤、线程基本程序结构以及实用编译方法。QNX 是由加拿大QNX 软件有限系统公司开发的
2009-08-12 17:37:1930
LINUX系统下多线程与多进程性能分析
采用多进程处理多个任务,会占用很多系统资源(主要是CPU 和内存的使用)。在LINUX 中,则对这种弊端进行了改进,在用户态实现了多线程处理多任务。本文系统论述了多线程间
2009-08-13 08:31:1520
多线程在VC++串口通信程序中的应用
本文通过一机房监控系统程序中串口通信对多线程的应用来介绍Windows 9X/NT操作系统中多线程的应用和VC++对多线程的支持。关健词: 多线程,串口通信在现代的各种实时监控系
2009-09-03 11:45:2927
多线程技术在串口通信中的应用
首先介绍了多线程技术的基本原理,然后讨论了多线程技术在串口通信中的应用,并给出了实现的方法和步骤。关键词:多线程;串口通信;事件
2009-09-04 09:10:1718
基于多线程技术的多串口通信
介绍了一个多串口通信模块,该模块采用VC++6.0并结合多线程技术编写,用来处理从远程终端站上传来数据。同时良好的线程同步解决方法也保证了模块程序能够运行更可靠,数据
2010-02-21 15:52:2135
基于多线程技术的多串口通信
介绍了一个多串口通信模块,该模块采用VC++6.0并结合多线程技术编写,用来处理从远程终端站上传来数据。同时良好的线程同步解决方法也保证了模块程序能够运行更可靠,数据的
2010-07-22 17:38:2437
linux多线程编程课件
电子发烧友为您提供了linux多线程编程课件,希望对您学习 linux 有所帮助。部分内容如下: *1、多线程模型在单处理器模型和多处理器系统上,都能改善响应时间和吞吐量。 *2、线程包
2011-07-10 11:58:430
Win32多线程同步技术浅析
简要介绍了在Win32环境下多线程访问共享资源时的同步机制,讨论了主要的4种同步对象(临界区、互斥元、事件、信号量),并描述了它们的优缺点,给出了使用Win32 API函数操控这4种对
2011-11-14 10:55:5431
linux多线程编程开发
本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验,用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中,我们穿插一些 Windows 的编程用例用以对比 Linux 特性
2011-12-26 14:24:4455
用多线程实现GPS接收机与PDA在Windows CE下的串口通
本文简单介绍了 GPS 接收机串口通信的基本概念和 GPS 数据输出的格式。主要论述了 如何用 多线程编程方法在 Windows CE 下实现 GPS 接收机与PDA的通信 以及线程间的数据通信 线程调度 数据同步等问题 。
2016-04-18 14:12:305
多线程与聊天室程序的创建
多线程程序的编写,多线程应用中容易出现的问题。互斥对象的讲解,如何采用互斥对象来实现多线程的同步。如何利用命名互斥对象保证应用程序只有一个实例运行。应用多线程编写网络聊天室程序。
2017-05-16 15:22:530
java多线程同步方法
操作,一个取100块,一个存钱100块。假设账户原本有0块,如果取钱线程和存钱线程同时发生,会出现什么结果呢?取钱不成功,账户余额是100.取钱成功了,账户余额是0.那到底是哪个呢?很难说清楚。因此多线程同步就是要解决这个
2017-09-27 13:19:400
关于多线程编程教程及经典应用案例的汇总分析
多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。本文为大家介绍多线程在Linux环境下的编程及在实际环境中的应用。 多线程技术在数据实时采集分析中的应用 本文介绍的多线程、内存映射文件和两级缓冲的方法在高速
2017-10-16 16:46:550
多线程编程之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:1579711
mfc多线程编程实例及代码,mfc多线程间通信介绍
摘要:本文主要以MFC多线程为中心,分别对MFC多线程的实例、MFC多线程之间的通信展开的一系列研究,下面我们来看看原文。
2017-12-08 15:23:4317054
什么是多线程编程?多线程编程基础知识
摘要:多线程编程是现代软件技术中很重要的一个环节。要弄懂多线程,这就要牵涉到多进程。本文主要以多线程编程以及多线程编程相关知识而做出的一些结论。
2017-12-08 16:30:0811929
多线程服务器编程模型:如何正确使用mutex 和condition variable
本文对多线程服务器的常用编程模型进行了一个详细的解读,本文中的多线程服务器是运行在 Linux 操作系统上网络应用程序。介绍了典型的单线程服务器编程模型和典型的多线程服务器的线程模型以及进程间通信与线程间通信等相关内容。
2018-02-19 08:29:006891
Python3多线程核心知识
用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运
2018-04-16 11:46:185044
关于Linux下多线程编程技术学习总结
Linux下多线程编程技术 作为一个IT人员,不断的学习和总结是我们这个职业习惯,所以我会将每个阶段的学习都会通过一点的总结来记录和检测自己的学习效果,今天为大家总结了关于Linux下多线程编程技术。
2018-04-22 03:12:022051
C#多线程技术
C#和.NET类库为开发多线程应用程序提供了很方便的支持,本章首先简要介绍.NET类库中的Thread类及各种线程支持,再通过示例说明线程使用中需要掌握的规则,最后论述线程同步时出现的问题。 多线程
2018-04-23 11:32:0514
各型号的DSPBIOS线程同步原语以及相关的问题和约束
DSP编程已经从单循环程序过渡到使用实时特征的复杂多线程应用程序。多线程应用程序需要同步对共享资源的访问。
DSP/BIOS提供了同步线程的多个机制。该机制提供了禁用线程类型、更改线程优先级以及
2018-05-03 09:24:554
了解Linux多线程及线程间同步
进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
2019-04-23 14:23:01605
Linux 多线程可重入函数
在单线程程序中,整个程序都是顺序执行的,一个函数在同一时刻只能被一个函数调用,但在多线程中,由于并发性,一个函数可能同时被多个函数调用,此时这个函数就成了临界资源,很容易造成调用函数处理结果
2019-05-16 17:41:58813
linux多线程机制-线程同步
,线程调度、同步与互斥都需要用户程序自己完成。内核级线程需要内核参与,由内核完成线 程调度并提供相应的系统调用,用户程序可以通过这些接口函数对线程进行一定的控制和管理。Linux操作系统提供
2019-04-02 14:42:43329
多进程与多线程的深度比较
扩展到多机分布的用进程,多核分布的用线程。5)都满足需求的情况下,用你最熟悉、最拿手的方式。至于”数据共享、同步“、“编程、调试”、“可靠性”这几个维度的所谓的“复杂、简单”应该怎么取舍,只能说:没有明确的选择方法。一般有一个选择原则:如果多进程和多线程都能够满足要求,那么选择你最熟悉、最拿手的那个。
2019-04-02 14:42:58352
Linux下的多线程编程
一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入
2019-04-02 14:43:07465
Linux多线程编程的高效开发
多线程开发在 Linux 平台上已经有成熟的 Pthread 库支持。其涉及的多线程开发的最基本概念主要包含三点:线程,互斥锁,条件。其中,线程操作又分线程的创建,退出,等待
2019-04-02 14:45:11227
Linux多线程与同步
的UNIX系统,但Linux的多线程在逻辑和使用上与真正的多线程并没有差别。 多线程我们先来看一下什么是多线程。在Linux从程序到进程中,我们看到了一个程序在内存中的表示。这个程序的整个运行过程中,只有
2019-04-02 14:47:58316
嵌入式linux多线程编程实验,嵌入式Linux多线程编程-学习资源-华清远见.PDF
嵌入式Linux多线程编程-学习资源-华清远见清远见嵌入式学院:清远见嵌入式学院:《嵌入式应用程序设计》——第5 章 嵌入式Linux 多线程编程第5 章 嵌入式Linux 多线程编程本章
2021-11-02 13:36:167
arduino scoop多线程
arduino scoop多线程实际上arduino没有多线程,所谓的多线程可能只是多任务。在同时运行两个较为简单的或者是执行周期很短的程序时应该是没问题的。程序较为复杂,或者需要放到某一线程
2021-12-06 09:51:108
RT-Thread学习笔记 --(5)RT-Thread线程间同步学习过程总结
多线程之间同步是继多线程学习之后,需要重点掌握的又一个重要内容。一个实时操作系统里面,如果只有多线程而没有线程间同步,各个线程...
2022-01-25 18:52:590
python创建多线程的两种方法
1. 用函数创建多线程 在Python3中,Python提供了一个内置模块 threading.Thread ,可以很方便地让我们创建多线程。 threading.Thread() 一般接收两个参数
2022-03-15 16:47:285059
MFC多线程及线程同步
MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。
2022-06-01 17:03:380
多线程启动停止暂停继续
单核CPU上所谓的”多线程”那是假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,看着像多个线程”同时”运行罢了。
2022-08-11 15:47:171498
Java多线程永动任务 多线程异步任务项目解读
1. 功能说明 2. 多线程任务示例 2.1 线程池 2.2 单个任务 2.3 任务入口 2.4 结果分析 2.5 源码地址 3. 写在最后 大家好,今天教大家撸一个 Java 的多线程永动任务
2022-10-19 11:46:28753
Linux中多线程编程的知识点
Hello、Hello大家好,我是木荣,今天我们继续来聊一聊Linux中多线程编程中的重要知识点,详细谈谈多线程中同步和互斥机制。
2023-04-26 17:27:44466
浅谈Linux网络编程中的多进程和多线程
在Linux网络编程中,我们应该见过很多网络框架或者server,有多进程的处理方式,也有多线程处理方式,孰好孰坏并没有可比性,首先选择多进程还是多线程我们需要考虑业务场景,其次结合当前部署环境,是云原生还是传统的IDC等,最后考虑可维护性,其具体的对比在第三部分具体会展开说。
2023-08-08 16:56:16371
如何使用pthread_barrier_xxx系列函数来实现多线程之间的同步?
在Linux系统中提供了多种同步机制,本文主要讲讲如何使用pthread_barrier_xxx系列函数来实现多线程之间进行同步的方法。
2023-10-23 14:43:06237
Linux系统上多线程和多进程的运行效率
,会让你深受其害。 经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好。根据实际情况来判断,哪个更加合适就是哪个好。 我们按照多个不同
2023-11-10 10:54:11361
多线程同步的几种方法
多线程同步是指在多个线程并发执行的情况下,为了保证线程执行的正确性和一致性,需要采用特定的方法来协调线程之间的执行顺序和共享资源的访问。下面将介绍几种常见的多线程同步方法。 互斥锁(Mutex
2023-11-17 14:16:19412
多线程如何保证数据的同步
多线程编程是一种并发编程的方法,意味着程序中同时运行多个线程,每个线程可独立执行不同的任务,共享同一份数据。由于多线程并发执行的特点,会引发数据同步的问题,即保证多个线程对共享数据的访问顺序和正确性
2023-11-17 14:22:09240
mfc多线程编程实例
(图形用户界面)应用程序的开发。在这篇文章中,我们将重点介绍MFC中的多线程编程。 多线程编程在软件开发中非常重要,它可以实现程序的并发执行,提高程序的效率和响应速度。MFC提供了丰富的多线程支持,可以轻松地实现多线程编程,并解决线程间的同步和通信问题。 首先,让我们看一个简单的MFC多线程
2023-12-01 14:29:20402
java实现多线程的几种方式
8中的CompletableFuture 一、继承Thread类 继承Thread类是实现多线程的最基本方式,只需创建一个类并继承Thread类,重写run()方法即可。 ``
2024-03-14 16:55:0299
评论
查看更多