梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记
任务管理
状态有就绪,运行,阻塞,退出态
好像跟多线程相似
软件定时器
创建定时器:osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr);
启动定时器:osTimerStart (osTimerId_t timer_id, uint32_t ticks);
停止定时器:osTimerStop (osTimerId_t timer_id);
删除定时器:osTimerDelete (osTimerId_t timer_id);
软件定时器使用了系统的一个队列和一个任务资源,软件定时器的触发遵循队列规则,先进先出。
定时时间短的定时器总是比定时时间长的靠近队列头,满足优先被触发的准则。
信号量
创建互斥锁:osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr);
获取互斥锁:osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout);
释放互斥锁:osSemaphoreRelease (osSemaphoreId_t semaphore_id);
删除互斥锁:osMutexDelete (osMutexId_t mutex_id);
事件管理
创建事件标记对象:osEventFlagsNew (const osEventFlagsAttr_t *attr);
设置事件标记:osEventFlagsSet (osEventFlagsId_t ef_id, uint32_t flags);
等待事件标记触发:osEventFlagsWait (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout);
删除事件标记对象:osEventFlagsDelete (osEventFlagsId_t ef_id);
互斥锁
当有任务持有时,互斥锁处于闭锁状态,这个任务获得该互斥锁的所有权。
当该任务释放时,该互斥锁被开锁,任务失去该互斥锁的所有权。
当一个任务持有互斥锁时,其他任务将不能再对该互斥锁进行开锁或持有。
消息队列
创建消息队列:osMutexNew (const osMutexAttr_t *attr);
发送消息:osMutexAcquire (osMutexId_t mutex_id, uint32_t timeout);
获取消息:osMutexRelease (osMutexId_t mutex_id);
删除消息队列:osMutexDelete (osMutexId_t mutex_id);