5s Bug in shared library

Hier habt Ihr die Möglichkeit direkt mit dem fischertechnik Team in Kontakt zu treten
Here you have the Possibility to get in direct contact with the fischertechnik-Team

Moderator: fischertechnik Mitarbeiter

Forumsregeln
Bitte beachte die Forumsregeln!

In dieser Unterkategorie können nur fischertechnik-Mitarbeiter und Moderatoren antworten!
Antworten
Benutzeravatar
elektrofuzzis
Beiträge: 148
Registriert: 25 Jun 2016, 09:40

5s Bug in shared library

Beitrag von elektrofuzzis » 21 Dez 2020, 17:32

Hallo ft-Team,

bei der Verwendung von shared libraries bin ich auf ein stranges Verhalten gestoßen.

shared library libTest.cpp:

Code: Alles auswählen

using namespace std;

extern "C" {	
  int getDouble(double *x) { *x = 42; return 0;} 
  } 
RoboPro Testprogramm #1
testcase1.png
testcase1.png (23.26 KiB) 740 mal betrachtet
Das Testprogramm setzt die Variable "int" auf den Wert 42 für 3s, danach für 1s auf 0 und beginnt wieder von vorn. ->Ok
Setzt man den ersten Timer auf 4s (so dass in Summe zwischen den beiden getShort-Calls >=5s Zeit vergeht), dann funktioniert der erste Aufruf von getShort, jeder weiter Aufruf liefert 0. Schreibt man in der c-Library bei jedem Aufruf in ein Logfile, so ist im Fall von <5s jeder Aufruf gelogged, ab 5s wird nur der erste Aufruf gelogged.

Die C-Aufrufe arbeiten mit Ganzahlwerten, LockInterface ist angeclickt.

RoboPro Testprogramm #2
testcase2.png
testcase2.png (37.88 KiB) 740 mal betrachtet
Baut man nun einen zweiten Thread, der nur regelmäßig eine Funktion der so-Lib aufruft und dies häufiger macht, so bleibt der Thread an dem getShort-Aufruf hängen, der den Aufruf zeitlich als "zweiter" macht. In diesem Fall der rechte Thread.

Schalte ich LockInterface aus, dann funktionieren beide Threads.

Wo liegt mein Denkfehler? LockInterface dient doch genau dazu, mit mehreren Threads arbeiten zu können.

Mit freundlichen Grüßen

Stefan Fuss

fite-Team
fischertechnik Mitarbeiter
Beiträge: 13
Registriert: 23 Okt 2020, 18:59

Re: 5s Bug in shared library

Beitrag von fite-Team » 06 Feb 2021, 15:43

Guten Tag Herr Fuss,

wir leiten dieses Problem an unseren ROBOPro Spezialisten weiter in der Hoffnung, dass er eine Antwort darauf geben kann.

Freundliche Grüße
das fischertechnik Team

Antworten