es gibt hier noch einen Bug oder Issue, wie man thread prios richtig setzt - bisher brachten alle Vorschläge noch keine Lösung.
Man muss nämlich die thread prios der main loop prio angleichen, wenn beide ohne delays parallel laufen sollen
(std::threads laufen nämlich per prio=5 per default, main loop nur bei default prio=1!!):
Code:
esp_pthread_cfg_t cfg;
esp_pthread_get_cfg(&cfg);
cfg.prio=1;
esp_pthread_set_cfg(&cfg);
funktioniert nicht, weil anfangs cfg noch keine Werte enthält und daher einen Fehler zurückgibt,
und
Code:
esp_pthread_cfg_t cfg;
if (esp_pthread_get_cfg(&cfg) != ESP_OK) {
cfg = esp_pthread_get_default_config();
}
cfg.prio=1;
if (esp_pthread_set_cfg(&cfg) != ESP_OK) {
printf("esp_pthread_set_cfg failed\n");
abort();
};
funktioniert auch nicht, weil die hier verwendete Funktion
esp_pthread_get_default_config();
nicht gefunden wird.
siehe Topic-Posts u.a.
https://github.com/espressif/ESP8266...SDK/issues/609
https://github.com/espressif/esp-idf...ment-496157019
und folgende...
betroffene libs am ehesten wohl
https://github.com/espressif/ESP8266...ts/pthread/src
Hat jemand eine idee, wie es richtig geht?
Lesezeichen