当前位置:首页>Linux>一篇文章吃透:Linux线程创建与等待

一篇文章吃透:Linux线程创建与等待

  • 2026-03-12 01:47:41
一篇文章吃透:Linux线程创建与等待
在之前学习嵌入式linux系统编程时,相信很多朋友和我一样,是不是都有这种感觉:
明明代码都是这些代码,为什么突然就能够“多线并行”了?
比如:一个线程负责采集数据,一个线程负责界面显示,一个线程负责网络通信。程序看起来好像是在同时做很多个任务,背后依赖的就是———“线程机制”
而使用线程的第一步,通常就是依赖这两个核心函数:
  • pthread_create()
  • pthread_join()
别看它们只有“创建”和“等待”这两个动作,实际上这里面已经包括了线程最关键的一些基础逻辑:
谁来创建线程、线程从哪里开始执行、参数怎么传进去、线程结束后怎么拿到结果、主线程为什么要等待。
下面我就把这些知识点讲明白

一、先别急着背函数,先搞懂线程到底是什么?

    如果把一个进程理解成“一个正在运行的程序”,那线程就可以理解成:
这个进程内部的一条执行路线。
    平时我们写的普通 C / C++程序,默认只有一条执行路线,也就是从
main() 开始,一行一行往下走。但有了线程以后,程序就不再只有主线程
这一条路了。我可以额外创建新的执行单元,让它和主线程一起工作。

二、一个完整线程的基本流程

    主线程先准备好线程 ID参数和返回值变量主线程调用 pthread_create 创建一个子线程子线程从指定函数 thread_func 开始执行子线程拿到主线程传入的参数,循环打印 5 次子线程执行结束后返回一个结果值主线程通过 pthread_join 等待子线程结束主线程拿到线程返回值,并把它打印出来
    简而言之,把最核心的四件事串起来:
    • 创建线程
    • 向线程传参
    • 等待线程结束
    • 获取线程返回值

    三、pthread_create:线程是怎么被“拉起来”的?

        先看线程创建这个动作。在单线程程序里,函数只有被当前执行流主动调用时才会运行。而在多线程程序里,pthread_create 的作用就是:告诉系统,再开一条新的执行流,让它从某个函数开始跑。它的本质不是“调用一个函数”,而是:
    创建一个新线程,并指定这个线程的入口函数。
    你可以把它理解成:主线程像一个项目经理,安排了一个新的工人去干活,这个工人一上岗,就从你指定的那个函数开始工作。
    比如,这个线程函数:
    void* thread_func(void* arg)
    也就是说,线程一旦创建成功,子线程就会从 thread_func 开始执行,而不是从 main 开始。

    四、为什么线程函数长这样:void* thread_func(void* arg)

    很多人第一次看到线程函数的写法都会疑惑:
    为什么参数是 void*?
    为什么返回值也是 void*?
    看起来一点都不直观。
    其实这是 POSIX 线程库为了通用性做的统一设计。
    1. 参数为什么是 void*
    因为线程库没法提前知道我们想传什么数据。比如我们有时候传一个整数,有时候传一个结构体,有时候传一个字符串。
    所以线程库统一规定:
    参数先用通用指针void*接收,具体是什么类型,由我们自己在线程函数里转换。
    2. 返回值为什么也是 void*
    原因类似,线程结束时,线程库也不知道我们想返回什么类型,所以统一用 void* 表示。
    return (void*)666;
    意思就是线程执行结束时,返回一个值 666,主线程再通过 pthread_join 把这个值取回来。所以这里的设计重点不是“void* 很奇怪”,而是:线程接口故意做成通用格式,让你能传各种参数、拿各种结果。

    五、主线程传进去的到底是什么?

    这部分特别值得展开,因为这是很多人写线程最容易犯错的地方。
    比如:
    int arg = 1;pthread_create(&tid, NULL, thread_func, &arg);
    这里传给线程的不是 1,而是 arg 的地址,也就是 &arg。这意味着子线程拿到的不是一个独立的整数副本,而是主线程变量的内存地址。
    为什么这么做?
    因为线程函数参数只有一个 void*,不能直接传普通整型值,所以一般要把数据放到某个内存位置,再把地址传过去。
    但这也正好提醒读者一个非常重要的线程传参原则:传给线程的参数,在线程使用期间必须保证有效。如果传的是一个临时变量地址,或者循环里反复复用同一个变量地址,就很容易出问题。
    很多线程参数错乱,根源都在这里。

    六、子线程到底是怎么运行起来的?

    线程创建成功后,子线程就开始执行 thread_func。
    1. 接收启动参数
    线程一开始,先拿到主线程传来的上下文信息。这一步在实际项目里特别常见。比如:传设备号、传任务编号、传配置结构体、传资源句柄
    2. 执行业务逻辑
    实际项目里,比如:读取传感器、接收网络数据、播放音频、刷新界面、写日志
    3. 结束并返回结果
    线程不是永远不结束的。
    线程函数一旦执行完,线程就退出。
    如果有需要,也可以在退出时返回一个结果给主线程。
    这说明线程本身也是有“出生—运行—结束”完整过程的,不是一个抽象概念。

    七、pthread_join:为什么主线程必须等它?

    这部分是整个知识点最容易被低估的地方。
    很多人看 pthread_join,第一反应是:
    哦,就是等线程跑完。
    这句话没错,但还不够完整。
    pthread_join 其实做了两件非常重要的事:
    第一件事:阻塞等待目标线程结束
    也就是说,主线程执行到这里以后,不会继续往下走,而是停下来等子线程跑完。
    第二件事:回收线程结束后的资源,并拿到返回值
    线程虽然执行完了,但它占用的某些系统资源并不会自动马上清理。
    pthread_join 的另一个作用,就是把线程“善后”处理掉,并把线程函数的
    返回值带回来。
    这点非常关键。
    因为线程不是跑完就万事大吉。
    如果你只让线程结束,却不做回收,那么资源管理就可能出问题。
    所以更准确地说:
    pthread_join 不只是“等线程”,还是“接收线程结果并完成回收”的动作。

    八、总结线程创建与等待   背后的四个意识

    1. 线程入口意识
    线程不是从 main 开始跑,而是从你指定的线程函数开始跑。
    所以线程函数本身就是这个线程的“主战场”。
    2. 参数传递意识
    线程参数不是随便传的。
    假如你传的是地址,线程用的时候就必须保证这块地址有效。
    3. 等待与同步意识
    线程之间不是各跑各的。
    很多时候主线程必须等待子线程结束,否则程序流程就不完整。
    4. 返回值回收意识
    线程结束不等于事情结束。
    如果你需要结果,或者要规范回收资源,就要通过 pthread_join 处理。
    这四个意识,才是这节内容真正的核心。

    九、把这节内容用一句话讲明白

    如果用一句最通俗的话来概括:
    pthread_create 负责把子线程启动起来,pthread_join 负责等它干完活,并把结果收回来。
    再说得工程一点:
    线程创建解决的是“让谁去做事”,线程等待解决的是“做完以后怎么衔接主流程”。
    这两步,是 Linux 多线程编程最基础的骨架。

    十、给读者的学习建议:别只看懂,要自己跑一遍

            这类知识点最怕“看懂了,但没真懂”。真正有效的学习方式不是只背函数原型,而是自己动手改几个版本:把参数从 1 改成别的值,看看输出怎么变把循环次数改大一点,观察主线程确实会等待把返回值改成别的数字,看看 join 是否能接收到,尝试再创建第二个线程,感受多个线程同时执行时的变化,因为线程这个知识,只有真正看到“主线程创建—子线程执行—主线程等待—回收结果”这个完整过程,脑子里才会形成稳定模型。

    结尾

    源码例子:
    vi thread_create_join.c#include<stdio.h>//用于打印 printf#include<pthread.h>//线程库#include<unistd.h>//sleep()//线程函数  thread_funcvoidthread_func(void* arg){    //把传进来的参数当成int的地址,然后把里面的参数取出来,存到num	    int num = *(int*)arg;  		    //循环打印5次    for(int i = 0; i < 5; i++)    {     	printf("Thread %d is running %d\n",num,i);        sleep(1);    }    return (void*)100;	}intmain(){    //声明一个线程ID变量    pthread_t tid;    //定义一个整型参数,将这个参数传给线程函数    int arg = 1;    //定义一个变量,接收线程返回值    void* ret;	    //&tid 保存线程  NULL 默认线程属性  thread_func 线程执行函数  NULL 线程参数    pthread_create(&tid,NULL,thread_func,&arg);    //等待线程tid结束       pthread_join(tid,&ret);    //打印线程返回值结果    printf("Thread exit code:%ld\n",(long)ret);    return 0;}编译:    gcc thread_create_join.c -o thread_create_join -lpthread    ./thread_create_join运行结果:Thread 1 is running 0Thread 1 is running 1Thread 1 is running 2Thread 1 is running 3Thread 1 is running 4Thread exit code:100总结:主线程先定义线程 ID、参数和返回值变量。然后主线程创建一个子线程,并把 arg 的地址传给它。子线程拿到参数后循环打印 5 次,每次间隔 1 秒。打印完后返回 100主线程用 pthread_join 等待子线程结束,并拿到返回值,最后打印出来。

    最新文章

    随机文章

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-03-27 14:49:41 HTTP/2.0 GET : https://f.mffb.com.cn/a/479431.html
    2. 运行时间 : 0.089328s [ 吞吐率:11.19req/s ] 内存消耗:4,567.35kb 文件加载:140
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=5b848f5d36967b9b8121bffee2d6e4e8
    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.000463s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000724s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000312s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000322s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000535s ]
    6. SELECT * FROM `set` [ RunTime:0.000274s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000560s ]
    8. SELECT * FROM `article` WHERE `id` = 479431 LIMIT 1 [ RunTime:0.000649s ]
    9. UPDATE `article` SET `lasttime` = 1774594182 WHERE `id` = 479431 [ RunTime:0.008733s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000282s ]
    11. SELECT * FROM `article` WHERE `id` < 479431 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001934s ]
    12. SELECT * FROM `article` WHERE `id` > 479431 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000468s ]
    13. SELECT * FROM `article` WHERE `id` < 479431 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001722s ]
    14. SELECT * FROM `article` WHERE `id` < 479431 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001298s ]
    15. SELECT * FROM `article` WHERE `id` < 479431 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005930s ]
    0.092127s