RT-Thread中使用线程这个概念,而不是任务。二者类似,我在这里把他的线程看成任务来理解了函数
1、任务处理:spa
动态任务相关API线程
建立任务:rt_thread_create函数,建立任务以后会返回rt_thread_t类型的任务IDcode
建立以后启动任务:rt_thread_startup对象
删除任务:rt_thread_deleteblog
任务延时函数:rt_thread_delay 延时时候,任务处于suspend状态内存
任务运行状况可用finish模块,在电脑终端查看编译器
二、动态建立线程和静态建立线程it
RT-Thread中支持静态和动态两种定义方式。用线程来举例的话,rt_thread_init对应静态定义方式,rt_thread_create对应动态定义方式。编译
这两种方式各有利弊,静态定义方式会占用RW/ZI空间,可是不须要动态分配内存,运行时效率较高,实时性较好。 动态方式不会占用额外的RW/ZI空间,占用空间小,可是运行时须要动态分配内存,效率没有静态方式高。
静态建立线程代码:
建立线程:rt_thread_init
启动线程:rt_thread_startup
脱离线程:rt_thread_detach
//静态建立线程 result = rt_thread_init(&thread1, //线程handle "static", //线程名 rt_init_thread_entry, //线程入口函数 RT_NULL, //线程入口参数 &thread1_stack[0], //线程栈地址 sizeof(thread1_stack), //线程栈大小 6, //线程优先级 10); //线程时间片
动态建立线程代码:
建立线程:rt_thread_create
启动线程:rt_thread_startup
线程启动成功后,当OS调度开始,便可被OS调度执行。
tid = rt_thread_create("init", rt_init_thread_entry, RT_NULL, 2048, 10, 5); if (tid != RT_NULL) rt_thread_startup(tid);
空间使用比较
动态建立的线程,delete以后会释放出空间
静态建立的线程,detach以后不会释放空间