线程优先级cpu时间片占有疑问

发布于 2019-07-12 16:28:42
我这边的项目是探索者STM32F407,使用ESP8266作为外接wifi设备,引入了AT Device库

创建了自己的工作线程HttpRequestThread,线程优先级为9

AT Device操作ESP8266模块的线程,看源码是在主线程,通过menuconfig,查看到主线程的优先级为10

在不使用TLS的时候,能够正常发送http请求,正常收到回复

当使用mbedtls库实现https请求的时候,会出现各种问题,要么AT层直接显示recv error,要么就是TLS握手的时候,读的时候,一直等待,无法正常返回,还有其他一些不成功的情况

修改工作线程HttpRequestThread的优先级为11,mbedtls握手成功,https请求正常返回

我的疑问是:如果是因为线程优先级导致socket读数据的时候没,没有时间片,为什么http请求可以正常返回,http请求也有socket的读操作

各位大神有路过,有经历类似情况的,还请帮忙解惑

查看更多

关注者
0
被浏览
650
2 个回答
flyboy
flyboy 2019-07-12
在 RT-Thread 中,只有相同线程相互抢占 cpu的时候,时间片才有意义,优先级不同,就会按照优先级抢占的方式运行,如果优先级相同,但是没有长时间占用cpu,也不会引发时间片调度。

楼主,可以看一下,是否由于 HttpRequestThread 优先级高,运行时导致 AT 线程得不到运行,获取不到数据造成的。
ouyangshengduo
ouyangshengduo 2019-07-12
flyboy 发表于 2019-7-12 17:47
在 RT-Thread 中,只有相同线程相互抢占 cpu的时候,时间片才有意义,优先级不同,就会按照优先级抢占的方 ...


嗯嗯,但为什么不用TLS的时候,http请求就是正常的呢

撰写答案

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

发布
问题

分享
好友