Bezpieczeństwo wątków w wyrażeniach regularnych

Sama Regex klasa jest bezpieczna wątkowo i niezmienna (tylko do odczytu). Oznacza to, że obiekty wyrażeń regularnych można tworzyć w dowolnym wątku i współdzielić między wątkami. Metody dopasowywania mogą być wywoływane z dowolnego wątku i nigdy nie zmieniają żadnego stanu globalnego.

Jednak obiekty wynikowe (Match i MatchCollection) zwracane przez wyrażenie Regularne powinny być używane w jednym wątku. Chociaż wiele z tych obiektów jest logicznie niezmiennych, ich implementacje mogą opóźnić obliczanie niektórych wyników, aby poprawić wydajność, a w rezultacie obiekty wywołujące muszą serializować dostęp do nich.

Jeśli istnieje potrzeba udostępniania obiektów wyników wyrażeń regularnych w wielu wątkach, te obiekty można przekonwertować na wystąpienia bezpieczne wątkowo, wywołując ich zsynchronizowane metody. Z wyjątkiem modułów wyliczających wszystkie klasy wyrażeń regularnych są bezpieczne wątkowo lub mogą być konwertowane na obiekty bezpieczne wątkowo przez zsynchronizowaną metodę.

Moduły wyliczania są jedynym wyjątkiem. Aplikacja musi serializować wywołania do modułów wyliczania kolekcji. Reguła polega na tym, że jeśli kolekcję można wyliczyć jednocześnie na więcej niż jeden wątek, należy zsynchronizować metody modułu wyliczającego na obiekcie głównym kolekcji przechodzącej przez moduł wyliczający.

Zobacz też