Autor Beitrag
FrEaKY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 235


D7
BeitragVerfasst: So 03.04.11 06:07 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconFrEaKY hat folgendes geschrieben Zum zitierten Posting springen:
Es ist doch allgemein bekannt, dass die VCL nicht threadsicher ist...
Schon, aber wo siehst du hier einen Zugriff darauf? :gruebel:

Naja, offensichtlich muss es einen geben, weil wenn er die Zeile ausklammert geht es ja. Vielleicht liegt es am inherited Create; :?:
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 03.04.11 06:32 
user profile iconFrEaKY hat folgendes geschrieben Zum zitierten Posting springen:
Naja, offensichtlich muss es einen geben, weil wenn er die Zeile ausklammert geht es ja. Vielleicht liegt es am inherited Create; :?:
Ich würde sagen, du hast es.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
class function TObject.NewInstance: TObject;
begin
  Result := InitInstance(_GetMem(InstanceSize));
end;

_GetMem mappt auf MemoryManager.GetMem mappt auf SysGetMem welches in grausamer Formatierung dieses tut:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function SysGetMem(size: Integer): Pointer;
// Allocate memory block.
begin
{...}
  try
    if IsMultiThread then EnterCriticalSection(heapLock);
{...}
  finally
    if IsMultiThread then LeaveCriticalSection(heapLock);
  end;
end;


Solltest du also nicht FastMM verwenden, dürfte das das Problem sein. Diese wäre dann nämlich mit Lock-Free Structures, soweit ich das sehe. Und damit ist das eine ziemlich böse Stolperfalle :shock: Ich frag mich grade, bei wie vielen Programmen ich das Problem ungesehen auch habe. Man gut, dass FastMM auf neueren Delphis der Standard-MM ist...

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 03.04.11 08:10 
Gut, das erklärt das dann. Da konnte ich leider nicht nachschauen, weil ich von den alten Delphiversionen nur noch die D7 PE (also ohne Quelltexte) im virtuellen PC habe.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: So 03.04.11 17:03 
Hey,

ich hab das hinzufügen zum Suchbaum mal in ein neues Projekt ausgelagert und 5 Threads erstellt die Zufallswerte ihn ihren eigenen Baum einfügen. Da läuft jeder Thread auf seinem eigenen Kern. Es ist zum Haare ausreißen -.-

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: So 03.04.11 17:31 
user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
Da läuft jeder Thread auf seinem eigenen Kern. Es ist zum Haare ausreißen -.-


Warum, das wolltest Du doch?! Oder ist es zum Verzweifeln, daß es beim Suchbaum funktioniert, jedoch nicht mit dem Anliegen, womit Du diese Diskussion eröffnetest?
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: So 03.04.11 17:41 
Hey,

ich benutz den Suchbaum in meinem Programm, da geht er nicht. In dem Testprojekt geht er aber. Das ist zum Haare ausreißen...

MfG Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^