高密哪里有做网站的cpc广告点击日结联盟
作者
pengdonglin137@163.com
环境
Linux 6.5 + ARM64
概述
在前一篇文章中介绍了Linux系统中的几种栈以及它们之间的切换,进程在用户态和内核态会使用不同的栈,在用户态的主线程和其他线程都有各自的栈,此外进程在执行信号处理程序时也需要栈,那么这个栈来自哪呢?
正文
我们还是以一个多线程的用户态可执行程序为例,先看现象,然后再结合Linux内核源码分析实现。
测试程序
介绍一下这个测试程序multi_thread_signal.c,在主线程里给SIGUSR1注册了处理函数,函数的实现很简单,主要就是打印当前的调用栈。然后主线程又创建了两个从线程,此时存在3个线程,这3个线程分别调用各自的func1、func2和func3,最后在func3中进入sleep,目的是方便我们观察调用栈。
#include <pthread.h>