Tworzenie izolatów i przekazywanie komunikatów
Komunikacja za pomocą SendPort i ReceivePort
Tworzenie izolatów i przekazywanie komunikatów to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Dart Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Dart Academy zawiera 4 lekcji w sumie.
Podejście ręczne
W przypadku długotrwałych pracowników, którzy intensywnie wymieniają wiadomości, należy samodzielnie utworzyć izolat za pomocą Isolate.spawn. Dzięki temu można kontrolować cały jego cykl życia.
Punkt wejścia
Isolate.spawn wymaga funkcji najwyższego poziomu jako punktu wejścia oraz jednego argumentu przekazywanego przy uruchamianiu.
Isolate.spawn(worker, message);Poznajmy ReceivePort
ReceivePort działa jak skrzynka pocztowa. Nasłuchując na nim, można odbierać wiadomości wysyłane przez inne izolaty. 📥
final port = ReceivePort();
port.listen((msg) => print(msg));Poznajmy SendPort
Każdy ReceivePort udostępnia obiekt SendPort. Każdy, kto ma ten SendPort, może umieszczać wiadomości w Państwa skrzynce pocztowej.
final SendPort tx = port.sendPort;Przekazanie portu
Aby rozpocząć komunikację, należy przekazać nowemu izolatowi obiekt SendPort jako argument funkcji spawn. Dzięki temu wie on, dokąd wysyłać odpowiedzi.
Isolate.spawn(worker, port.sendPort);Odpowiedzi pracownika
W pracowniku należy użyć otrzymanego SendPort, aby send wysłać wyniki z powrotem do głównego izolatu.
void worker(SendPort tx) {
tx.send('done');
}Uzgadnianie połączenia
Typowym wzorcem jest dwukierunkowy handshake: pracownik najpierw odsyła własny SendPort, aby obie strony mogły wysyłać sobie wiadomości.
Tylko dane przesyłalne
Wiadomości muszą zawierać dane przesyłalne: liczby, ciągi znaków, listy, mapy i obiekty SendPort. Otwarte pliki czy funkcje nie mogą przekraczać tej granicy.
Odczytywanie odpowiedzi
Po stronie głównego izolatu funkcja zwrotna listen obiektu ReceivePort jest wywoływana dla każdej odpowiedzi. Należy obsługiwać je w miarę nadejścia, zachowując ich kolejność.
Zamykanie portu
Po zakończeniu należy wywołać port.close(). Otwarty ReceivePort podtrzymuje działanie programu, więc jego zamknięcie pozwala na prawidłowe zakończenie pracy.
Zatrzymywanie izolatu
Należy zachować referencję do izolatu i wywołać isolate.kill(), aby zatrzymać niepotrzebnego już pracownika. Jego zasoby należy zwolnić bez zbędnej zwłoki.
Szybkie sprawdzenie
Na którym porcie należy nasłuchiwać, aby odbierać wiadomości?
Podsumowanie
Izolat należy uruchomić za pomocą Isolate.spawn, a następnie przekazać SendPort, aby izolaty mogły się ze sobą komunikować. Należy wysyłać wyłącznie dane przesyłalne i zamykać porty po zakończeniu pracy. ✅
Często zadawane pytania
Czy lekcja „Tworzenie izolatów i przekazywanie komunikatów” jest bezpłatna?
Tak — pełny tekst „Tworzenie izolatów i przekazywanie komunikatów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Dart Academy, przejdź na CoddyKit PRO. Kurs Dart Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Tworzenie izolatów i przekazywanie komunikatów”?
Komunikacja za pomocą SendPort i ReceivePort Ćwiczysz Dart Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Dart Academy?
Nie wymagamy żadnego doświadczenia. Dart Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Tworzenie izolatów i przekazywanie komunikatów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Dart Academy?
Tak. Każda lekcja Dart Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dlaczego izolaty zamiast wątków
- Isolate.run do szybkiego odciążania
- Tworzenie izolatów i przekazywanie komunikatów
- Zadania wymagające intensywnych obliczeń bez przycięć