线程对象结构体为什么不直接选择继承内核对象?

发布于 2021-02-22 21:54:26

最近看到RT-thread内核的代码,看到信号量、定时器等都继承基础内核对象结构体而来,然线程对象的结构体也和基础内核对象结构体一样,为什么不直接采用继承的方式实现?
统一一下,不是更好理解吗?
不过想来应该有其原因,有大佬能解释一下吗?

以下是从内核中复制的代码。

//内核对象结构体定义
/**
 * Base structure of Kernel object
 */
struct rt_object
{
    char       name[RT_NAME_MAX];               /**< name of kernel object */
    rt_uint8_t type;                             /**< type of kernel object */
    rt_uint8_t flag;                            /**< flag of kernel object */
​
#ifdef RT_USING_MODULE
    void      *module_id;                       /**< id of application module */
#endif
    rt_list_t  list;                           /**< list node of kernel object */
};
typedef struct rt_object *rt_object_t;         /**< Type for kernel objects. */

//线程对象结构体定义
/**
 * 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 */
    rt_list_t   tlist;                                  /**< the thread list */
   
    /*
    ........
    */
}

查看更多

关注者
0
被浏览
76
HappyTime
HappyTime 2021-02-23

估计是历史原因

2 个回答
mysterywolf
mysterywolf 2021-02-23

这个是历史原因

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览