AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FastSwitch

Ein Thema von EWeiss · begonnen am 22. Dez 2013 · letzter Beitrag vom 27. Dez 2013
 
Furtbichler
(Gast)

n/a Beiträge
 
#13

AW: FastSwitch

  Alt 25. Dez 2013, 11:18
Emil. Schöne Antwort.
Mal ganz grob dahingerotzt. Der TPluginLoader ist ein Thread, der wartet, bis er ein Plugin (neu) laden soll. Das wird ihm mit einer Semaphore mitgeteilt (Du kannst auch ein Event nehmen). Derjenige, der jetzt ein neues Plugin will, ruft einfach 'LoadPlugin' auf. Über das Event 'OnSignalPluginLoaded' wird ihm dann mitgeteilt, wenn das Plugin geladen wurde. Der Aufrufer kann jetzt also andere Dinge erledigen, wie z.B. Maus/Tastendrücke verarbeiten oder Kaffeetrinken.


Delphi-Quellcode:
Procedure TPluginLoader.Execute;
Begin
  While not terminated do
    if WaitForSingleObject(fSyncHandle, INFINITE) = WAIT_OBJECT0 then begin
      thisPlugin := NextPlugin;
      UnloadPlugin(CurrentPlugin);
      LoadPlugin(thisPlugin);
      Synchronize(SignalPluginLoaded);
    end
    else Terminate := True; // Handle wurde wohl geschlossen
End;

Procedure SignalPluginLoaded;
Begin
  if Assigned (OnSignalPluginLoaded) then
    SignalPluginLoaded(self, CurrentPlugin);
End;

Procedure TPluginLoader.LoadPlugin(aPlugin : TPlugin);
Begin
  NextPlugin := aPlugin;
  ReleaseSemaphore(fSyncHandle,1,nil);
End;
Auf die Typdeklaration des Threads sowie weitere Schutzmechanismen zum Setzen/Abfragen des aktuellen/nächsten Plugins mit critical sections habe ich mich jetzt nicht gekümmert. Auch fehlt der code, der 'CurrentPlugin' setzt oder die von Rufo vorgeschlagene Statusänderung (die ich über Events publizieren würde).

Wenn Du damit (noch) nicht klarkommst, dann wird dir hier bestimmt weitergeholfen. Wichtig ist hier das Prinzip der Signalisierung/Synchronisierung nebenläufiger Prozesse über Synchronisationsobjekte (Mutexe, Events, Semaphoren) und Events (OnXXXX).

Geändert von Furtbichler (25. Dez 2013 um 11:22 Uhr)
  Mit Zitat antworten Zitat
 


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 16:51 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