什么是defunct僵尸线程

发布时间:2021-10-12 16:22:35 作者:iii
来源:亿速云 阅读:272

这篇文章主要介绍“什么是defunct僵尸线程”,在日常操作中,相信很多人在什么是defunct僵尸线程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是defunct僵尸线程”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前言

线程初始化与创建

线程的资源回收

/* 来自:rt_thread_idle_excute 片段 */

        /* remove defunct thread */
        rt_list_remove(&(thread->tlist));
        /* release thread's stack */
        RT_KERNEL_FREE(thread->stack_addr);
        /* delete thread object */
        rt_object_delete((rt_object_t)thread);

main线程退出

动态线程的资源回收:

RT_USING_HEAP main存在时:线程栈大小为2048

msh >free
total memory: 89568
used memory : 10656
maximum allocated memory: 10656

main不存在时:

msh >free
total memory: 89568
used memory : 8456
maximum allocated memory: 10656

main的线程栈,return后的资源:2200 Bytes空间

2048 栈空间 + 12Byte(rt_malloc管理占用)
128Byte rt_thread结构体大小,sizeof(struct rt_thread) + 12Byte(rt_malloc管理占用,内核对象)。

合计:2048+12+128+12 = 2200。

总结

rt_thread_delete /* 线程的定时器,使用detach方式,定时器资源回收流程 */

rt_timer_detach(&(thread->thread_timer)); /* 定时器资源的回收流程 */
/**
* Thread structure
*/
struct rt_thread
{
   /* rt object */
   char        name[RT_NAME_MAX];                      /**< the name of thread */
   rt_uint8_t  type;                                   /**< type of object */
   rt_uint8_t  flags;                                  /**< thread's flags */

#ifdef RT_USING_MODULE
   void       *module_id;                              /**< id of application module */
#endif

   rt_list_t   list;                                   /**< the object list */

是否可以改为如下:

/**
 * Thread structure
 */
struct rt_thread
{
    struct rt_object parent;                            /**< inherit from rt_object */

到此,关于“什么是defunct僵尸线程”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. 什么是进程与线程
  2. 什么是Python线程

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

defunct

上一篇:XHTML中如何引入五大CSS样式

下一篇:Html DIV事件属性有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》