Mam aplikację jedno i dwu wątkową. Wątek 1 wysłucha danych rynkowych i zaktualizuje najnowszą ofertę dotyczącą tysięcy akcji. Wątek 2 uruchomi licznik na częstotliwości próbkowania i zrobi migawkę ostatnich cytatów do przetworzenia. Skutecznie, muszę pobrać próbkę bardzo szybkiego rynku danych rynkowych.Co to jest szybki, wydajny sposób przesyłania danych między wątkami w C#?
Moim pierwszym domysłem na rozwiązanie jest użycie BlockingQueue. Aby to zrobić, muszę przenieść funkcję licznika czasu do wątku 1, co mogę zrobić, sprawdzając zegar za każdym razem, gdy pojawi się aktualizacja wyceny i przesłać migawkę cytatów do kolejki z częstotliwością próbkowania. Obawiam się, że kolejka zużyje dużo pamięci, a wyrzucanie śmieci spowolni proces.
Moje drugie przypuszczenie polega na tym, że wątek 1 kopiuje dane do zablokowanego elementu na częstotliwości próbkowania, do której wątek 2 może uzyskać dostęp. Obawiam się, że zamki będą wolne.
Moja trójka zgaduje, że prymitywne cytaty są niestabilne. Ponieważ jeden wątek pisze tylko i jeden wątek tylko czyta, może to jest właściwe?
Czy istnieje metoda najlepszej praktyki przekazywania danych między wątkami dla tej aplikacji wrażliwej na opóźnienia? To nie jest aplikacja o bardzo wysokiej częstotliwości. Mogę tolerować opóźnienia rzędu dziesiątek ms.
Czy wymagana jest blokada odczytu czasu (odczyt/zapis)? :) –
@AmarPalsapure Dzięki, poprawiono literówkę! –
Thx za odpowiedź. Spróbuję zamków, aby zacząć. Co sądzisz o używaniu lotnych? –