Opened 11 years ago
Closed 11 years ago
#85 closed Aufgabe (fixed)
Verpasste Telegramme
| Reported by: | Melanie Hermann | Owned by: | Melanie Hermann |
|---|---|---|---|
| Priority: | kurzfristig | Milestone: | |
| Component: | Gesamtsystem | Version: | |
| Severity: | Aufgabe | Keywords: | |
| Cc: |
Description
Ab und zu kommt die Warnung "GCProt Telegramm verpasst".
Prüfen welche Telegramme verpasst werden, warum und was dagegen unternommen werden kann.
Change History (2)
comment:1 by , 11 years ago
comment:2 by , 11 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
Lösung:
Die Telegramme wurden nicht, wie angenommen, verpasst. Die GCProt-Queue war nicht threadsicher programmiert. Da die Funktion zum Befüllen der Queue aus verschiedenen Threads aufgerufen wird konnte es vorkommen, dass sich diese Threads in die Quere gekommen sind und die Telegramme somit fehlerhaft oder in der falschen Reihenfolge in der Queue gelandet sind.
Änderungen:
Kommentar:
Eine CriticalSection verhindert, dass ein anderer Thread den aktuellen Thread unterbricht und zur gleichen Zeit auf die Daten zugreift, die gelockt sind. Andere Threads, die nichts mit diesen Daten zu tun haben können jedoch sehr wohl den aktuellen Thread unterbrechen und mit anderen Daten arbeiten.
Ein Mutex hingegen verhindert jegliche Unterbrechung durch andere Threads. Dabei spielt es keine Rolle ob diese Threads auf die gleichen Daten zugreifen möchten oder nicht.