Synchronizacja wątków i GUI w aplikacji Delphi

Przykładowy kod aplikacji Delphi z graficznym interfejsem użytkownika z wieloma wątkami

Synchronizacja wątków i GUI

Synchronizacja wątków i GUI.





Wielowątkowość w Delphi umożliwia tworzenie aplikacji zawierających kilka jednoczesnych ścieżek wykonania.

Normalna aplikacja Delphi jest jednowątkowa, co oznacza, że ​​wszystkie obiekty VCL uzyskują dostęp do swoich właściwości i wykonują swoje metody w tym pojedynczym wątku. Aby przyspieszyć przetwarzanie danych w aplikacji, dołącz co najmniej jeden wątek pomocniczy.



Wątki procesora

A wątek jest kanałem komunikacyjnym od aplikacji do procesora. Programy jednowątkowe wymagają komunikacji w obu kierunkach (do i od procesora) podczas wykonywania; aplikacje wielowątkowe mogą otwierać kilka różnych kanałów, przyspieszając w ten sposób wykonanie.

Wątki i GUI

Gdy w aplikacji działa kilka wątków, pojawia się pytanie, w jaki sposób można zaktualizować graficzny interfejs użytkownika w wyniku wykonania wątku. Odpowiedź leży w klasie TThread Synchronizować metoda.



Aby zaktualizować interfejs użytkownika aplikacji lub wątek główny z wątku dodatkowego, musisz wywołać metodę Synchronize. Ta technika jest metodą bezpieczną wątkowo, która pozwala uniknąć konfliktów wielowątkowych, które mogą wynikać z uzyskiwania dostępu do właściwości obiektu lub metod, które nie są bezpieczne wątkowo, lub korzystania z zasobów, które nie są w głównym wątku wykonywania.

Poniżej znajduje się przykładowe demo, które używa kilku przycisków z paskami postępu, każdy pasek postępu wyświetla bieżący „stan” wykonania wątku.

|_+_|

Dziękujemy Jensowi Borrisholtowi za przesłanie tego przykładowego kodu.