Einzelnen Beitrag anzeigen

MechMac666

Registriert seit: 9. Nov 2008
95 Beiträge
 
#12

AW: Record threadsicher verwenden

  Alt 17. Mär 2021, 00:01
Zitat:
Ich verstehe dein Problem nicht ganz.
Naja, ich würde mal behaupten das es weniger systemlastig ist eine Nachricht mit einem bereits fertig verfügbaren Empfängerarray zu broadcasten,
anstatt ein solches Array für JEDE Nachricht aus dem TSynDictionary neu aufzustellen.

Im Grunde resultiert das zweite Problem aus dem ersten:
Nutze ich das
var logged_users:THttpServerConnectionIDDynArray; dann ist es nicht threadsicher. Aber es ist "sofort" verfügbar.
Wenn ich das Array für jede Nachricht aus dem TSynDictionary zusammen baue, fürchte ich eine hohe Systemlast.
Und zusätzlich habe ich dann das folgende Problem:


Die Nachricht darf nur an User versendet werden, dessen Name hinterlegt ist.
Somit müsste ich das ganze TSynDictionary durchgehen und prüfen, ob da ein Username drin steht.
Und wenn, dann brauche ich den Key dazu.

Deswegen wird mir das nicht helfen:
FUserList.FindKeyFromValue(user, userID); // userID = 5 Der User 'Klaus' aus dem Beispiel kann ja von verschiedenen Endgeräten eingeloggt sein. Er hat demnach verschiedene ID's.




Mein erster Ansatz war:
Delphi-Quellcode:
  FUserList.CopyValues(users);
  for I := Low(users) to High(users) do
  if (users[i].UserName<>'') then //Alle eingeloggten User
  begin
  //Und hier komme ich nicht an die ID, da sie der KEY ist und ich keinen Bezug dazu habe
  end;

Geändert von MechMac666 (17. Mär 2021 um 00:08 Uhr)
  Mit Zitat antworten Zitat