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

发表在 POSIX6 天前 [复制链接] 2 66

我这边的项目是探索者STM32F407,使用ESP8266作为外接wifi设备,引入了AT Device库
$ E3 y; _* S9 u) X; q0 X! v7 Y& P1 A' M$ I& s( ?
创建了自己的工作线程HttpRequestThread,线程优先级为9
0 c* M9 R* F6 ]* M* E
% e% I0 e- Q! @& j6 O0 d7 _+ QAT Device操作ESP8266模块的线程,看源码是在主线程,通过menuconfig,查看到主线程的优先级为10  K3 R3 _: L% K9 q

: M6 j7 ~% \! R, P* S在不使用TLS的时候,能够正常发送http请求,正常收到回复1 e" T8 W6 ~2 P" z9 H

2 y$ @2 h; }% q3 j' I% [! y! L  \当使用mbedtls库实现https请求的时候,会出现各种问题,要么AT层直接显示recv error,要么就是TLS握手的时候,读的时候,一直等待,无法正常返回,还有其他一些不成功的情况
% q+ Y4 L* x3 v
' R* j5 i7 S6 F9 f; T* G. b修改工作线程HttpRequestThread的优先级为11,mbedtls握手成功,https请求正常返回
) z3 }1 {, ]3 D+ x' N7 @; d7 ?1 N) e- j+ E6 S
我的疑问是:如果是因为线程优先级导致socket读数据的时候没,没有时间片,为什么http请求可以正常返回,http请求也有socket的读操作
" O4 L( j/ N, R- z; \: Q( W' M* v; e  K8 m; [
各位大神有路过,有经历类似情况的,还请帮忙解惑2 M& k4 K2 B- t7 Q6 \0 k0 a

3 f# @' `% c2 r5 i& b5 _
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 6 天前 | 显示全部楼层
flyboy 发表于 2019-7-12 17:47
8 Z0 r; i: l7 Z$ D在 RT-Thread 中,只有相同线程相互抢占 cpu的时候,时间片才有意义,优先级不同,就会按照优先级抢占的方 ...
3 y" n; h; U8 |2 m" N% s
嗯嗯,但为什么不用TLS的时候,http请求就是正常的呢
使用道具 举报 回复
发表于 6 天前 | 显示全部楼层
在 RT-Thread 中,只有相同线程相互抢占 cpu的时候,时间片才有意义,优先级不同,就会按照优先级抢占的方式运行,如果优先级相同,但是没有长时间占用cpu,也不会引发时间片调度。8 Q2 F, s6 l& h8 \" B
7 u' w4 g9 R1 |, g
楼主,可以看一下,是否由于 HttpRequestThread 优先级高,运行时导致 AT 线程得不到运行,获取不到数据造成的。
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区  

© 2013-2017 上海睿赛德电子科技有限公司 沪ICP备13014002号-1

Powered by RT-Thread

快速回复 返回顶部 返回列表