Wątek roboczy ma stan trwały: po uruchomieniu wątku roboczego pracownik jest dostępny do wykonania, dopóki zmienna nie zniknie z zakresu lub pracownik zostanie zamknięty.
Weź przykład skryptu, który pobiera wiele stron z wielu źródeł w trybie online: w niewielkiej skali możesz uciec i może to być najlepszy projekt do obsługi wielu wątków, każdy wątek ma do czynienia z pojedynczym żądaniem i przetwarzanie treści. Zwykle jednak należy uznać za ogromne marnotrawstwo, aby rozpocząć wątek w celu złożenia pojedynczego żądania lub wykonać coś bardzo prostego, zamiast tego uruchomi się tylu pracowników, ilu będzie mógł zarządzać twój sprzęt i środowisko, oraz zaimplementuj żądanie i przetwarzanie treści. jako możliwy do układania w stosy. Podczas korzystania z Workers, każde żądanie nie kosztuje zainicjowania wątku wątków. Trwałość w tym kontekście odnosi się do faktu, że każdy ze stackables może odczytać $ this-> worker i uzyskać dostęp do wszystkich/dowolnych zakresów globalnych (w tym klasy statycznej), więc z punktu widzenia Stackowalności w trakcie realizacji kontekst Robotnik nie ustępuje, w rzeczywistości Stackables po prostu dzielą się kontekstem.
Mutex i Cond są dla osób uzależnionych od gwintów posix, i do moich celów podczas opracowywania samego pthreadsa. Normalni użytkownicy nie powinni tak naprawdę korzystać z tej funkcji, choć jest to również udokumentowane jako odpowiednik funkcji posix, a znaczna część oryginalnej dokumentacji nadal obowiązuje (z warstwą rozsądku na górze). Mutex i Cond są cienkimi opakowaniami wokół znanej funkcjonalności i nie są skierowane na Joe Bloggs.
Zgaduję, że zastanawiasz się, czy muteks są wymagane do bezpiecznego czytania i pisania obiektów, tak nie jest, bezpieczeństwo jest wbudowane w pthreads.
Czasy, w które powinieneś używać wątku nad robotnikiem; z przykładu, w małej skali. Dodatkowo, jeśli masz sprzęt do obsługi, wątki mogą tworzyć Workers (i wątki), co pozwala na bardziej złożone możliwości projektowania systemów. Możesz również okazać się niesamowity, w takim przypadku możesz zaprogramować swoje wątki, aby działały jak pracownicy bez obciążania obiektu inicjalizacją (stackables) dla każdego zadania. Pracownik jest wątkiem, tylko niektóre funkcje wątku zostały przesłonięte, aby wykonać listę stackables, zauważysz subtelne różnice w metodach synchronizacji wątku i pracownika, co nie ma znaczenia, jeśli używasz pracowników zgodnie z przeznaczeniem . Jeśli jednak Twoja awesomeness doprowadzi cię do przekonania, że lepiej jest unikać standardowego modelu, to będziesz potrzebował synchronizacji z obiektu Thread, aby zaimplementować wzorzec Worker w PHP.
Faktem jest, że jeśli patrzysz na wątki, chcesz robić więcej niż 2 lub 3 rzeczy naraz, istnieje szansa, że znalazłeś sposób na zrobienie kilku rzeczy. Zatem zapewnienie funkcjonalności Worker/Stackable jako części pakietu pthreads ma sens, ponieważ lepiej nadaje się do wykonywania kilku rzeczy w oddzielnych kontekstach, pisanie tych rzeczy w PHP (nawet przy pomocy pthreadów) byłoby trudne.
Dziękujemy! to jest ogromna pomoc. Podczas gdy mój kod działał, jestem daleko poza torem. Nadal zastanawiam się, kiedy użyjesz zwykłego obiektu Thread. – marlonp33
Okay, zaktualizowałem odpowiedź kilkoma moimi informacjami na temat wątku ... mam nadzieję, że to w pełni odpowiada na twoje pytanie. –
Musiałem przeczytać to wiele razy, aby zrozumieć, co mówisz. ale dzięki! – Nerrve