Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn eine Komponente nur über einen Ausführungsthread verfügt, kann zu einem bestimmten Zeitpunkt nur Code für ein einzelnes Objekt ausgeführt werden. Die Automatisierungsfunktion des Component Object Model (COM) reagiert auf diese Situation, indem die Anforderungen serialisiert werden. Mit anderen Worten, die Anforderungen werden in eine Warteschlange eingereiht und nacheinander verarbeitet, bis sämtliche Anforderungen abgeschlossen sind.
In einer Multithreading-Betriebsumgebung wird durch die Serialisierung verhindert, dass Singlethread-Objekte Clientanforderungen überlagern, d. h., es wird verhindert, dass Code in einer Eigenschaft oder Methode bereits ausgeführt wird, wenn die Ausführung einer oder mehrerer früherer Clientanforderungen noch nicht abgeschlossen ist. Sich überlagernde Anforderungen können zu internen Datenfehlern führen, wenn Objekte nicht für Reentranz entworfen wurden.
Die Serialisierung stellt somit ein besonders wichtiges Merkmal der Automatisierung dar. Serialisierung von Singlethread-Komponenten bedeutet jedoch auch, dass Anforderungen mitunter blockiert werden können. Nehmen Sie beispielsweise an, Sie verwenden ein Widget-Objekt, das über die beiden Methoden Spin und Flip verfügt.
- Für die Ausführung der Spin-Methode ist ein Zeitraum von einigen Sekunden bis zu einer halben Stunde erforderlich.
- Die Flip-Methode ist nahezu sofort abgeschlossen.
Da 32-Bit-Anwendungen für präemptives Multitasking konzipiert sind, kann eine zweite Anwendung die Flip-Methode aufrufen, während die Spin-Methode bereits ausgeführt wird. Die kurze Flip-Methode wird blockiert, bis die Ausführung der langen Spin-Methode abgeschlossen ist.
Werden kurze Operationen durch lange blockiert, kann dies Produktivitätseinbußen und eine zunehmende Unzufriedenheit auf Seiten der Benutzer zur Folge haben. Komponenten, die ein derartiges Verhalten aufweisen, werden als unzureichend skalierbar bezeichnet. Mit anderen Worten, sie weisen ein schlechtes Leistungsverhalten auf, falls viele Anforderungen unterschiedlicher Länge ausgegeben werden.
Visual FoxPro stellt zwei Komponentenfunktionen zur Verbesserung der Skalierbarkeit und Vermeidung blockierter Aufrufe zur Verfügung: nur einfach verwendbare Instanzen und Multithread-Objekte. Weitere Informationen finden Sie unter Steuerung der Aufrufblockierung.
Siehe auch
Frühes (vtable) und spätes (Idispatch) Binden | Visual FoxPro-Laufzeitbibliotheken | Interoperabilität und das Internet | Kompilieren von Quellcode