AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Thread Synchronize funktioniert nicht in Android Delphi Rio
Thema durchsuchen
Ansicht
Themen-Optionen

Thread Synchronize funktioniert nicht in Android Delphi Rio

Ein Thema von skoschke · begonnen am 26. Dez 2019 · letzter Beitrag vom 1. Jan 2020
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Thread Synchronize funktioniert nicht in Android Delphi Rio

  Alt 27. Dez 2019, 08:48
Wobei ich auch nie etwas offizielles dazu gefunden habe, nur Erfahrungswerte und Meinungen dass das so sein sollte wenn man sich grade mal konkreten Assemblercode unter 32 Bit anschaut (z.B. https://stackoverflow.com/q/5481030/2298252).

Grade wenn ich auch Win64 oder Mac oder iOS machen würde, dann wäre mir etwas Offizielles dazu echt lieber. Ich bin ein vorsichtiger Mensch, ich mache auch bei simplen Typen wie Integern Sperren drum, dann kann ich mir auch in Zukunft nichts vorwerfen.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Thread Synchronize funktioniert nicht in Android Delphi Rio

  Alt 27. Dez 2019, 10:42
Vorausgesetzt ist dabei natürlich, dass es eine einfache 32-Bit Integervariable oder ein 32-Bit Integerfeld ist, das entsprechend ausgerichtet ist, z.B. durch Setzen von {$ALIGN 4}.
Grade wenn ich auch Win64 oder Mac oder iOS machen würde, dann wäre mir etwas Offizielles dazu echt lieber. Ich bin ein vorsichtiger Mensch, ich mache auch bei simplen Typen wie Integern Sperren drum, dann kann ich mir auch in Zukunft nichts vorwerfen.
Eben drum, das kann schiefgehen. Einen String als Byte-Speicher zu mißbrauchen war auch über Jahre oft geübte Praxis, Das geht auch nur noch wenn man ganz genau weiß was man treibt und wenn es schief geht ist man's selber schuld. Nicht zu empfehlen!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
927 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Thread Synchronize funktioniert nicht in Android Delphi Rio

  Alt 27. Dez 2019, 13:04
Mein Programm macht x-Sachen parallel und wichtig ist, dass das abgespielte Video auch während eines parallelen Downloads flüssig weiterläuft. Daher verzichtet ich auf synchronized soweit es geht, sonst ruckelt das Video leider schnell. Daher dieses Vorgehen bei mir, wo es den Timer auch davor schon gab und ich ihn somit für die Fortschrittsanzeige mit nutze. Für eine Fortschrittsanzeige (die sich eh ständig aktualisiert und man ein Update auch mal auslassen kann), würde ich dann immer noch ein try-except einem ständig zuschlagenden synchronized vorziehen, wenn ich nicht atomare Werte nutze (was bei integer nicht der Fall ist). Ist aber sicherlich Ansichtssache und geht nur, wenn die Anzeige eh in der nächsten Sekunde wieder andere Werte zur Anzeige erhält.

Geändert von philipp.hofmann (27. Dez 2019 um 13:06 Uhr)
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Thread Synchronize funktioniert nicht in Android Delphi Rio

  Alt 28. Dez 2019, 10:05
Danke erst mal für Eure Antworten, ich versuche mal ein Minimalbeispiel zusammenzubauen...

Ciao
Stefan
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Thread Synchronize funktioniert nicht in Android Delphi Rio

  Alt 1. Jan 2020, 10:53
So, ich bin schlauer:

Ein Miniprojekt aktualisiert wie gewünscht, über eine globale Integer-Variable ohne das Synchronize...

Dabei bin ich aber darauf gestoßen, dass für einen SSL-Download ja auch
Delphi-Quellcode:
    NetHTTPClient1: TNetHTTPClient;
    NetHTTPRequest1: TNetHTTPRequest;
verwendet werden kann, mit zwei hervorragenden Vorteilen:
- die Komponente kann asynchron arbeiten, also gar kein Thread notwendig und
- die Komponenten kapseln das SSL des Betriebssystems (auch Android) so dass das ganze umständliche Handling mit OpenSSL bei Android entfallen kann

Problem gelöst

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.962 Beiträge
 
Delphi 12 Athens
 
#6

AW: Thread Synchronize funktioniert nicht in Android Delphi Rio

  Alt 27. Dez 2019, 12:03
Ich bin ein vorsichtiger Mensch, ich mache auch bei simplen Typen wie Integern Sperren drum, dann kann ich mir auch in Zukunft nichts vorwerfen.
Dafür gibt es ja wie gesagt die atomaren Operationen. Die sind um Größenordnungen schneller als Sperren wie mit TMonitor.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.812 Beiträge
 
Delphi 12 Athens
 
#7

AW: Thread Synchronize funktioniert nicht in Android Delphi Rio

  Alt 27. Dez 2019, 12:50
Wieviele parallele Downloads laufen da denn? KISS ist es ja nun nicht unbedingt, wenn man für einen Schreiber und einen Leser mit Semaphoren oder ähnlichem Gedöns los legt. Klar ist Vorsicht die Mutter der Porzellankiste, aber...in diesem speziellen Fall ist Vorsicht die Mutter des Umständlichen.

Ganz abgesehen davon geht es ja überhaupt nicht.
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  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 02:08 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