Ich habe exemplarisch mal ein wenig in Live herumgestöbert und frage mich, ob zum Beispiel hier:
...
… nicht auch noch ein LOCK_SCHEDULES_READ gebräucht würde.
Die Funktion bekommt ja 'schedules' übergeben, welches nur über einen Lock erhalten werden konnte.
Also nein.
Heißt das, dass man keine Locks setzen muss, solange man den zugeordneten Pointer (Timers, Channels, Schedules, Recordings) im Code nicht benötigt?
So ist es.
Welche indirekte Abhängigkeiten gibt es diesbezüglich? Wie etwa die folgenden:
Du musst nur die Listen locken, mit denen du arbeiten möchtest. Wenn du mit mehreren Listen gleichzeitig arbeiten möchtest, musst du sie alle locken, und zwar in genau der genannten Reihenfolge, da es sonst zu Verklemmungen kommen könnte, wenn mehrere Threads auf mehrere Listen warten, sie aber in unterschiedlicher Reihenfolge locken.