AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Eigene Ableitung von TThreadList<T> - Habe ich einen Denkfehler?
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Ableitung von TThreadList<T> - Habe ich einen Denkfehler?

Ein Thema von TiGü · begonnen am 8. Aug 2014 · letzter Beitrag vom 11. Aug 2014
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Eigene Ableitung von TThreadList<T> - Habe ich einen Denkfehler?

  Alt 8. Aug 2014, 15:38
Ich dachte immer, List[Index] :=Foo macht etwas anderes, als List.Insert(Index,Foo Wenn dem so wäre, wäre der Tipp vielleicht suboptimal.
In Kombination mit vorherigem Remove
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Eigene Ableitung von TThreadList<T> - Habe ich einen Denkfehler?

  Alt 8. Aug 2014, 16:30
In Kombination mit vorherigem Remove
"Dann ist aber der Eintrag nicht mehr an der selben Stelle." sagte Dejan und wunderte sich kurz darauf, wieso die Meute ihn an Füßen und Schultern packte, horizontal hin und her schaukelte, um ihn in hohem Bogen und unter hämischem Johlen, Grölen und Beifallklatschen der Anwesenden die Böschung hinunter zu werfen.

Sir Rufo, der Edle (wie er von seinen Vasalen genannt wird), schüttelte nur augenbrauenwackelnd den Kopf und ritt ins Wochenende.

Dejan, wieder zu sich gekommen, krabbelte die Böschung hinauf, setzte sich wieder hin und schrieb:
Warum ist das so und wie geht es besser?
Du bietest dem Anwender die Möglichkeit, Daten einzeln in die Threadliste zu schreiben (wie man das von einer normalen Liste gewohnt ist). Es besteht also die Gefahr, das er (der Anwender, also ein anderer Programmierer) diese sehr praktische Möglichkeit nutzt, anstatt die anstehenden Änderungen zu sammeln, um sie explizit durch einmaliges Lock/Unlock in die Liste einzutragen.

Die Implementierung der 'Put' Methode ('Set' hat sich eigentlich als Name etabliert, genauergesagt :SetItem', wenn 'Item' der Name der Property ist) an sich ist vollkommen ok.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.075 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Eigene Ableitung von TThreadList<T> - Habe ich einen Denkfehler?

  Alt 11. Aug 2014, 11:12
Warum ist das so und wie geht es besser?
Du bietest dem Anwender die Möglichkeit, Daten einzeln in die Threadliste zu schreiben (wie man das von einer normalen Liste gewohnt ist). Es besteht also die Gefahr, das er (der Anwender, also ein anderer Programmierer) diese sehr praktische Möglichkeit nutzt, anstatt die anstehenden Änderungen zu sammeln, um sie explizit durch einmaliges Lock/Unlock in die Liste einzutragen.
Du meinst ein klassisches AddRange()?
Ja, das wäre noch denkbar.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Eigene Ableitung von TThreadList<T> - Habe ich einen Denkfehler?

  Alt 11. Aug 2014, 11:38
Ja genau. Dann gibt es zwar immer noch Dumpfbacken, die das nicht verwenden, aber besser wäre das. Ich persönlich würde den Setter weglassen, aber nicht in deinem Fall: Wir reden aber hier ja nicht von einer allgemeinen Threadlist, sondern einem mit möglichst wenig Aufwand zu implementierenden threadsicheren Ersatz für deine Listen und da geht Kompatibilität vor Performance. Erstmal soll es laufen. Den Setter kannst Du dann später irgendwann wegschmeißen und schauen, wie viel Arbeit das Umschreiben wäre...

Ich wollte ja nur darauf hinweisen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#5

AW: Eigene Ableitung von TThreadList<T> - Habe ich einen Denkfehler?

  Alt 11. Aug 2014, 11:57
Natürlich könnte man auch direkt LockList und UnlockList aufrufen
und dann kann man ja dennoch problemlos mehrfach etwas in der Liste machen.


CriticalSections sind schneller, als man vielleicht denkt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.075 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Eigene Ableitung von TThreadList<T> - Habe ich einen Denkfehler?

  Alt 11. Aug 2014, 16:11
@Devan:
Warum die Setter-Methode wegschmeißen?
Es gibt immer Situationen, wo man wirklich nur ein Element hinzufügen will.

@Himi:
Aber auch nur bei einer eigenen Implementierung von TThreadList<T>.
Schau mal was in deinen XE3 in Zeile 2495 in System.Generics.Collections steht.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: Eigene Ableitung von TThreadList<T> - Habe ich einen Denkfehler?

  Alt 11. Aug 2014, 16:27
@Devan:
Warum die Setter-Methode wegschmeißen?
Es gibt immer Situationen, wo man wirklich nur ein Element hinzufügen will.
Natürlich, aber dein Kollege könnte dazu verleitet werden, Elemente nur auf diese Art zu verändern, obwohl das eben unperformant ist.

Es ist nur ein Hinweis, das man Klassen auch gegen Idioten schützen kann, und manchmal muss.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz