![]() |
[Prism] Interner Fehler bei for parallel - Schleife
Hallo zusammen!
Ich wollte nach gründlichem Testen der für mich als Delphi Win32 Benutzer "normalen" Möglichkeiten der Sprache von Delphi Prism mal mit den neuen tollen Features beschäftigen. In diesem Fall mit einer parallelen for-schleife. Ich habe also ein neues Projekt für eine Windows Forms Anwendung angelegt, nen Button auf die Form gesetzt und in den Eventhandler des Click-Ereignisses folgenden ersten und sinnlosen Code geschrieben:
Delphi-Quellcode:
Das Projekt kann dann dann nicht kompiliert werden. Der Compiler sagt "(CE7) Internal Error (D03)" in RemObjects.Oxygene.targets. Außerdem gibts in der gleichen Datei einige Warnungen.
method MainForm.Button1_Click(sender: System.Object; e: System.EventArgs);
var j:Integer; begin j:=0; for parallel i:Integer:=0 to 10000 do begin j:=j+1; end; end; Die Bibliothek System.Threading(Aus der Parallel Extensions CTP 2008), Version 1.0.3058.34407, habe ich referenziert und in der uses-Klausel des Codes der Form angegeben. Der Fehler lässt sich ohne weiteres reproduzieren. Lasse ich das Schlüsselwort "parallel" weg, funktioniert alles wie erwartet. Soll ich den internen Fehler nun darauf schieben, dass ich ne Betaversion von Prism(RO Oxygene 3.0.16.571) benutze oder gibts vielleicht etwas, das ich gegen den Fehler tun kann? Danke :) |
Re: [Prism] Interner Fehler bei for parallel - Schleife
Ich würde mal denken, dass RO da ein wenig die Fehlermeldungen verbessern könnte (dein Schleifencode hängt von einer Variable ausserhalb der Schleife ab, da können ganz böse gleichzeitige Schreib/Lesezugriffe passieren - parallel startet Threads, immer dran denken).
|
Re: [Prism] Interner Fehler bei for parallel - Schleife
Hier hab ich ganz offensichtlich mal wieder Nachholbedarf :)
Hmm, ohne "j" kompiliert das tatsächlich. Aber jetzt steh' ich erst recht aufm Schlauch. Kannst Du mir ein dreizeiliges Beispiel klappern, damit ich kapiere, wie ich Daten in die Schleife geben und Ergebnisse rausbekommen kann? (Oder kannst Du mir das wenigstens erklären?) |
Re: [Prism] Interner Fehler bei for parallel - Schleife
Zitat:
Delphi-Quellcode:
Ich habe hier eine
var j := new class(Value := 0);
for parallel i : Integer := 0 to 10000 do begin locking j do j.Value := j.Value + 1; end; ![]() Natürlich ist der Code komplett irrsinnig. Schließlich sorgt das " ![]() |
Re: [Prism] Interner Fehler bei for parallel - Schleife
Deine Lösung ist interessant und leuchtet auch direkt ein, aber ich kann sie nicht umsetzen - es gibt dann wieder den selben Fehler.
|
Re: [Prism] Interner Fehler bei for parallel - Schleife
Ich benutze eine ältere Beta-Version (Pre-RTM) und da kompiliert Roberts Code.
Dein Code auch, aber bei dem dürfte es dann zur Laufzeit knallen ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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