028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

什么是defunct僵尸线程

这篇文章主要介绍“什么是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僵尸线程”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


网页标题:什么是defunct僵尸线程
分享网址:http://www.tsicrk.com/article/jspphh.html

其他资讯

让你的专属顾问为你服务

2.3415s