1.任务的优先级
在bcos系统中任务优先级是一个非常重要的概念,它直接影响到用户创建的任务的重要性和其被调度执行的顺序。在bcos中优先级被定义为一个8位的无符号的整数,其中在系统初始化后系统会自动创建两个任务,它们分别是空闲任务和mainloop任务。空闲任务的优先级是0xFF而mainloop任务的优先级仅仅比空闲任务的优先级高一点点是0xFE。所以,用户创建任务时优先级可以在0x00到0xFD之间任选一个就可以。当然,两个任务的优先级尽量不要相同,如果用户创建了两个优先级相同的任务也没关系系统仍然可以正常运行,只是这两个优先级相同的任务如果同时处于就绪状态时其执行顺序是不确定的。
2.任务的创建
bcos任务的创建为用户准备了两个接口
/*
* 创建任务,需要静态定义任务控制块和栈空间
* 任务优先级可以是0x00 - 0xFD
*
* @param:
* tcb: 任务控制块指针
* task: 任务处理函数
* p_arg: 任务函数参数
* ptos: 栈底指针
*/
void bcos_task_create(bcos_tcb_t *tcb, void (*task)(void *ptr), void *p_arg, BC_OS_STK *ptos);
/*
* 创建任务,任务控制块和栈空间用动态分配的方式
*
* @param:
* task: 任务处理函数指针
* p_arg: 任务处理函数参数
* prio: 任务优先级
* task_size: 任务栈的深度
*
* @return
* 返回任务控制块指针,如果指针不为NULL则任务创建成功,否在任务创建失败
*/
bcos_tcb_t *bcos_task_malloc(void (*task)(void *ptr), void *p_arg, u