初级会员

- 积分
- 162
- 金钱
- 162
- 注册时间
- 2018-11-7
- 在线时间
- 16 小时
|

楼主 |
发表于 2018-11-14 20:44:41
|
显示全部楼层
原子哥晚上2点还在线 夜生活丰富呀
netconn_XX()函数都调用了tcpip_apimsg()函数,其会阻塞在一个信号量上,直至释放该信号量。等待、释放、发送等都会调用OS_Sched();
以下是原子哥课件中总结的任务调度点:
1、释放信号量或者发送消息,也可通过配置相应的参数不发生任务调度。
2、使用延时函数OSTimeDly()或者OSTimeDlyHMSM()。
3、任务等待的事情还没发生(等待信号量,消息队列等)。
4、任务取消等待。
5、创建任务。
6、删除任务。
7、删除一个内核对象。
8、任务改变自身的优先级或者其他任务的优先级。
9、任务通过调用OSTaskSuspend()将自身挂起。
10、任务解挂某个挂起的任务。
11、退出所有的嵌套中断。
12、通过OSSchedUnlock()给调度器解锁。
13、任务调用OSSchedRoundRobinYield()放弃其执行时间片。
14、用户调用OSSched()。
再次感谢原子哥的指点和不懈努力地对粉丝们疑惑的解答!! |
|