当前位置:首页>Linux>Linux内核与RTOS(基于RT-Thread) 任务同步&通信机制对比

Linux内核与RTOS(基于RT-Thread) 任务同步&通信机制对比

  • 2026-08-18 23:10:42
Linux内核与RTOS(基于RT-Thread) 任务同步&通信机制对比
Hello,大家好,我是程序媛MM。

本文约4100字,今天继续读书并学习任务间同步及通信。多任务并发是操作系统核心能力,只要存在共享资源、多线程协作场景竞态条件、数据错乱、优先级反转、死锁等问题就会随之而来。Linux内核面向通用服务器/PC,RT-Thread面向嵌入式实时设备,二者虽然底层同步思想同源(互斥、同步、消息传递),但实现粒度、使用约束、适用场景差异极大。

本文结合《深入Linux内核架构》第五章锁与进程间通信以及官网RT-Thread编程指南第四章任务间同步及通信这两个章节内容,梳理两类系统全部同步、IPC机制,横向对比异同,总结实际开发高频踩坑点。

关注公众号, 即可获得与Linux相关的电子书籍以及常用开发工具,文末有文档清单。


一 基础核心概念:竞态与临界区(二者完全一致)

1. 竞态条件(Race Condition)

多执行流(CPU/线程/中断)并发读写共享变量,读写操作被调度打断,导致数据不一致。文档经典案例:双进程共享计数器counter,进程1读取数值后被调度切走,进程2修改并覆盖数据,最终序号丢失、文件覆盖。

关键特性:竞态复现概率极低,无法靠测试覆盖,必须从代码加锁防护。

2. 临界区

访问共享资源的代码片段,核心约束:同一时刻仅允许一个执行流进入,即互斥访问。

  • 错误方案:单纯关闭中断/禁用抢占,长时间阻塞会丢失中断、破坏实时性;
  • 标准方案:锁、信号量、互斥量等同步原语。

二 底层基础同步锁机制对比(Linux内核 vs RT-Thread)

2.1 中断锁(关中断)

RT-Thread实现

API:rt_hw_interrupt_disable()/rt_hw_interrupt_enable(level),保存恢复中断上下文,支持嵌套。 适用场景:极短临界区(单变量自增)、中断与线程共享资源互斥。 

限制:关中断期间外设中断全部屏蔽,长时间持有会丢失硬件信号,实时性崩盘。

Linux内核实现

底层local_irq_disable()/local_irq_save(flags),衍生锁:spin_lock_irq()spin_lock_irqsave()

 差异:Linux区分SMP多核场景,关中断仅屏蔽本地CPU,其他CPU仍可并发访问共享变量,必须搭配自旋锁使用;RT-Thread多为单核MCU,关中断即可完全杜绝竞态。

相同点

  1. 最高效底层同步原语,所有上层锁(信号量/互斥量)底层均依赖中断锁保护内部结构;
  2. 临界区必须极短,禁止调用耗时、睡眠函数。

2. 调度锁(仅RT-Thread独有)

API:rt_enter_critical()/rt_exit_critical(),关闭线程调度,但不屏蔽硬件中断,中断服务程序仍可正常执行。 适用场景:仅线程间共享资源,无中断读写;嵌套计数支持,成对调用。 Linux无对应机制:Linux靠preempt_disable()禁用内核抢占实现同类效果,属于自旋锁配套逻辑,无独立调度锁API。

2.2 自旋锁 Spinlock

Linux内核自旋锁

数据结构spinlock_t,核心逻辑:抢锁失败时忙循环自旋等待,不进入睡眠。 细分衍生:普通自旋锁、_irq关中断版、_bh关软中断版;读写自旋锁rwlock_t。 硬性约束(高频踩坑):

  1. 持有自旋锁时绝对不能睡眠kmalloc、信号量down()等睡眠函数禁止调用);
  2. 同一CPU不可递归获取,直接死锁;
  3. SMP多核专用,单核无抢占时自旋锁为空操作。

RT-Thread无独立自旋锁API

RT-Thread面向单核嵌入式MCU,依靠中断锁+调度锁替代自旋锁场景,没有单独spinlock组件。

2.3 原子操作 Atomic

Linux

atomic_t专用封装类型,提供atomic_inc/atomic_add_return等接口,硬件lock指令保证单CPU操作原子;SMP下自动多核同步,适合计数器、标记位。禁止和普通int混用。 衍生local_t:仅本地CPU原子操作,无多核同步,性能更高。

RT-Thread

无单独原子操作组件,短变量互斥直接使用中断锁封装实现等价逻辑。

2.4 信号量 Semaphore

Linux内核信号量

结构体struct semaphore,核心成员:atomic_t count(资源计数)、等待队列。

  • 二值信号量:count=1,实现基础互斥;
  • 计数信号量:count>1,资源池同步; API:down()(不可中断睡眠)、down_interruptible()(可被信号唤醒)、down_trylock()(非阻塞)、up()释放。 特性:等待线程进入睡眠,释放CPU,适合长时间临界区;性能开销高于自旋锁。

RT-Thread信号量

结构体struct rt_semaphore,16位value计数,支持FIFO/优先级等待队列。 API:rt_sem_take()/rt_sem_release(),支持超时等待。 三大使用场景:

  1. 互斥:初始值1(二值信号量);
  2. 线程同步:初始值0,一个线程释放唤醒另一个;
  3. 中断同步:中断释放信号量唤醒业务线程(中断仅release,不可take阻塞)。

二者异同

相同:count资源计数、等待线程睡眠、支持非阻塞获取; 差异:

  1. Linux区分内核/用户层SysV信号量,两套独立实现;RT-Thread仅一套内核信号量,用户线程直接调用;
  2. Linux信号量无原生优先级继承,存在优先级反转;RT-Thread信号量同样无反转解决方案,互斥量才支持。

2.5 互斥量 Mutex(解决优先级反转专用)

Linux内核mutex

struct mutex,专属互斥原语,区别于二值信号量:

  1. 具备所有者标记,支持递归上锁;
  2. RT实时互斥量rt_mutex实现优先级继承,解决优先级反转;
  3. 仅线程可持有,中断上下文禁止使用。

RT-Thread mutex

struct rt_mutex,内置original_priority、持有计数、owner指针,原生优先级继承。 核心优势:

  1. 递归上锁不死锁(同线程多次take计数累加);
  2. 低优先级持有锁时,高优先级阻塞会临时提升持有者优先级,避免中等优先级线程抢占; 硬性限制:中断服务函数绝对不能使用mutex(无上下文保存睡眠逻辑)。

核心区别总结

维度
Linux内核mutex
RT-Thread mutex
递归
支持
原生支持,持有计数
优先级
实时配置开启PI
默认内置优先级继承
使用场景
内核线程
任务线程,中断禁用

2.6 Linux独有高级同步机制

RT-Thread无对应组件,仅Linux内核提供:

  1. RCU(读复制更新)读无锁并发,写时拷贝副本,等所有读操作完成释放旧数据;适合读多写少场景,内核链表大量使用。约束:读区间不可睡眠。
  2. per-CPU近似计数器多核计数器优化,每个CPU本地缓存增量,阈值统一同步全局计数,消除频繁原子锁瓶颈。
  3. 读写锁 rwlock / rw_semaphore读并发、写独占,区分读写场景提升并发效率。
  4. 大内核锁BKL老旧粗粒度全局锁,现已废弃,新代码禁止使用。

三 进程/任务间通信IPC机制对比

3.1 System V IPC(Linux用户层独有)

Linux完整提供三套SysV IPC:信号量、消息队列、共享内存,全局key标识,全系统进程共享:

  1. SysV信号量:信号量数组,支持批量操作semop,撤销机制防止进程崩溃死锁;
  2. SysV消息队列:类型过滤,可按消息type选择性接收;
  3. SysV共享内存:直接页表映射,零拷贝大数据传输。 RT-Thread无SysV IPC,嵌入式无多独立进程概念,仅线程间通信。

3.2 事件 Event(RT-Thread独有同步组件)

struct rt_event,32bit标志位,每一位代表独立事件,支持逻辑与/或等待:

  • 或等待:任意一个事件置位即唤醒;
  • 与等待:所有指定事件全部到达才唤醒; 特性:事件不计数,多次发送同一标志只生效一次;可线程/中断发送,仅线程阻塞接收。 Linux无原生事件组件,需通过信号量/位图自行封装。

3.3 邮箱 Mailbox(RT-Thread轻量消息)

单条固定4字节(32位系统指针大小),容量可配置,中断可非阻塞发送,适合传递指针、简单数值。 局限:无法传输大块数据,仅传递地址句柄。

3.4 消息队列 MessageQueue(Linux+RT双端均有,实现差异大)

RT-Thread消息队列

不定长消息,内存池缓存,支持紧急消息插入队首;中断可发送,仅线程阻塞接收;数据完整拷贝,无需管理外部缓冲区生命周期。

Linux消息队列

分SysV消息队列、POSIX mq,全局系统资源,多进程跨进程收发;内核消息结构复杂,支持消息类型筛选。

3.5 通用IPC补充

  1. 管道/套接字:Linux独有,基于VFS,支持进程、网络跨设备通信;RT-Thread少量网络版本提供socket,无管道;
  2. 信号Signal(Linux用户层):异步软中断,进程信号掩码、待决队列,RT-Thread无标准信号机制。

四 两类系统开发高频踩坑点汇总

(一)Linux内核锁踩坑

  1. 自旋锁内睡眠自旋锁忙等,无上下文切换,调用kmalloc(GFP_KERNEL)、信号量down()、wait事件会直接死锁。
  2. 未区分SMP/单核锁逻辑 单核开抢占时自旋锁等价关闭抢占;多核仅关中断无法阻止其他CPU访问共享变量,必须搭配spinlock。
  3. 混用信号量与mutex引发优先级反转 普通信号量无优先级继承,低优先级持有、高优先级阻塞、中优先级抢占,实时性失效,实时内核必须用rt_mutex。
  4. RCU读区间睡眠 rcu_read_lock保护代码禁止睡眠,会破坏读副本生命周期管理。
  5. 粗粒度全局锁(BKL/单一全局自旋锁) 多核高并发场景形成性能瓶颈,必须拆分为细粒度锁。
  6. SysV IPC资源泄漏 进程崩溃不删除sem/mq/shm,内核对象永久占用,需手动ipcrm清理。

(二)RT-Thread RTOS开发踩坑

  1. 中断中使用mutexmutex依赖线程睡眠调度,中断上下文无栈保存,直接系统卡死;中断同步只能用信号量、事件、邮箱非阻塞发送。
  2. 信号量递归上锁死锁 二值信号量无持有计数,同一线程连续rt_sem_take永久阻塞,递归场景必须换mutex。
  3. 长时间持有互斥量 即使开启优先级继承,低优先级线程持有锁时仍会阻塞高优先级,临界区代码尽量精简。
  4. 事件重复发送无效 同一bit多次set只会触发一次唤醒,计数场景不能用事件,改用信号量。
  5. 邮箱仅4字节,误用传大数据 直接拷贝结构体只会截断,正确做法:堆分配缓冲区,传递指针。
  6. 调度锁内执行耗时操作 关闭线程调度后,高优先级任务无法抢占,系统实时性严重下降。

(三)两类系统通用共性坑

  1. 锁配对缺失:take/lock后忘记release/unlock,永久死锁;
  2. 多锁无序获取:同时持有多锁不固定顺序,循环等待死锁;
  3. 临界区包含打印、延时、文件IO等耗时操作;
  4. 未正确处理超时返回值,误以为一定能获取锁;
  5. 共享变量无任何同步保护,侥幸运行,偶发数据错乱。

五 机制选型落地指南

1. 短临界区、单变量互斥

  • Linux:原子操作atomic / 自旋锁;
  • RT-Thread:中断锁。

2. 线程间长时间互斥、防止优先级反转

  • Linux:rt_mutex;
  • RT-Thread:mutex。

3. 线程-中断同步、单次唤醒通知

二者均选择信号量(初始0)

4. 等待多类触发条件(按键、数据、超时)

  • Linux:位图+信号量封装;
  • RT-Thread:事件Event。

5. 传递4字节以内指令/指针

  • Linux:内核自定义队列;
  • RT-Thread:邮箱Mailbox。

6. 不定长数据块线程通信

  • Linux:POSIX消息队列/共享内存;
  • RT-Thread:消息队列MessageQueue。

7. 读多写少高频共享数据

Linux专属RCU;RT-Thread读写场景无专用组件,使用mutex。

8. 多进程跨设备大数据交互

仅Linux支持SysV共享内存、套接字、管道。

六 总结

Linux内核面向通用多进程SMP平台,同步机制分层丰富:底层原子、自旋锁;中层信号量、mutex、RCU;上层完整SysV/POSIX跨进程IPC,兼顾高性能多核并发与多进程隔离。 RT-Thread面向单核嵌入式实时MCU,简化锁体系,舍弃复杂多核RCU、SysV IPC,新增事件、邮箱、消息队列轻量化线程通信组件,原生内置优先级继承互斥量,更适配硬实时嵌入式场景。

二者同步底层核心逻辑完全统一:通过锁实现临界区互斥、睡眠原语解决线程等待;差异全部来源于硬件架构(多核Linux vs 单核RTOS)、业务模型(多进程PC/服务器 vs 单进程多线程嵌入式)。

实际开发选型核心原则:最短临界区、最轻量锁、避免优先级反转、禁止上下文错用锁原语,规避很大部分诡异bug。

往期文章(欢迎订阅技术分享栏目全部文章):

【从零开始撸内核驱动源码】:以ttyserial(串口驱动)为例,串联字符设备驱动基础知识点的学习计划
Linux内核源码顶层 Makefile分析并单独编译调试内核自带的驱动
【从零开始撸内核驱动源码】:ttynull驱动
Linux内核驱动安装失败问题调试及解决方法
Linux内核驱动源码走读之编译内核及外部驱动实操指南
谢谢你看到这里

这里是女程序员的笔记本

 15年+嵌入式软件工程师兼二胎宝妈

分享读书心得、工作经验,自我成长和生活方式。

希望我的文字能对你有所帮助

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 15:50:41 HTTP/2.0 GET : https://f.mffb.com.cn/a/505471.html
  2. 运行时间 : 0.245949s [ 吞吐率:4.07req/s ] 内存消耗:4,684.25kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=3fc0c48079d96f0adeafcab74ea7df08
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000978s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001459s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000758s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.008273s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001744s ]
  6. SELECT * FROM `set` [ RunTime:0.000674s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001908s ]
  8. SELECT * FROM `article` WHERE `id` = 505471 LIMIT 1 [ RunTime:0.001459s ]
  9. UPDATE `article` SET `lasttime` = 1787298641 WHERE `id` = 505471 [ RunTime:0.011194s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000702s ]
  11. SELECT * FROM `article` WHERE `id` < 505471 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001130s ]
  12. SELECT * FROM `article` WHERE `id` > 505471 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001013s ]
  13. SELECT * FROM `article` WHERE `id` < 505471 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002082s ]
  14. SELECT * FROM `article` WHERE `id` < 505471 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007238s ]
  15. SELECT * FROM `article` WHERE `id` < 505471 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.024764s ]
0.249484s