Wielowątkowość w programowaniu obiektowyym

0

Cześć. Zaczynam uczyć się programowania wielowątkowego. Chcę stworzyć prosty program, który będzie składał się z trzech wątków przesyłających między sobą informację. Jeden wątek powinien dostawać informacje od dwóch pozostałych i przesyłać im informacje od siebie. Natomiast te dwa pozostałe mają przesyłać informację do głównego wątku i odbierać od niego, ale między sobą się nie będą komunikowały. Nie wiem jednak jak się zabrać do tego od strony architektury aplikacji. Mam stworzyć 3 klasy: Thread1, Thread2, ThreadMain i w każdej z tych klas jako pole dodać kolejkę, na którą inne wątki będą wrzucałe swoje wiadomości? Czy to jest dobry pomysł? Może jest jakieś lepsze rozwiązanie, np. wszystkie kolejki deklarowane poza klasami? Z góry dziękuję za wszystki podpowiedzi.

1

W czym programujesz? I czemu tak chcesz robić?
Generalnie lepiej unikać komunikacji między wątkami i współdzielonych zmiennych(chyba że niemutowalnych)

1

To co chcesz zrobić brzmi jak prymitywny system aktorów. W jakim języku to robisz? Robisz to dla siebie czy na zadanie na studia? Bo jeśli dla siebie to taka rzeźba może nie mieć sensu i lepiej wziąć jakiś bardziej wysokopoziomowy framework wielowątkowości

1

Najlepiej gdybyś opisał problem który ma za zadanie rozwiązać program, wtedy łatwiej Ci pomóc.

Pamiętaj, że przy komunikacji między wątkami, czy generalnie programowaniu wielowątkowym, trzeba dbać o synchronizację w dostępie do zasobów.

0

Programuję w C++. Projekt robię dla siebie i docelowo ma być to apka która będzie bazować na pewnych zdarzeniach systemowych. Np. jak podłączę konkretnego pendrive'a to chcę na nim zrobić kopię zapasową. I to byłby jeden wątek. Do tego byłyby też wątki związane z innymi procesami. Niektóre z tych wątków mogą działać jednocześnie. Potrzebuję wątek nadzorujący te wszystkie pozostałe wątki, który zbierałby informację o tym, co dzieje się w pozostałych wątkach, bo chcę później przetwarzać te informacje. Chcę też mieć możliwość przesyłania informacji od głównego wątku do pozostałych, żeby wykonały jakieś konkretne operacje.

1

W C++ jest biblioteka thread, a do synchronizacji, szczególnie jeśli chodzi o obiekty używane w wielu wątkach naraz, jest biblioteka mutex. Nie wiem, czy to jest mutex czy monitor, bo w C# odpowiednikiem mutex, który robi to samo jest System.Threading.Monitor.

To, co jest najbardziej potrzebne:
https://en.cppreference.com/w/cpp/thread/thread
https://en.cppreference.com/w/cpp/thread/mutex

1 użytkowników online, w tym zalogowanych: 0, gości: 1