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;}
}
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 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