johny_bravo napisał(a)
Dlaczego powinna? Biblioteka jest zbiorem funkcji udostepnianych na zewnatrz kazdemu, kto zechce z nich korzystac. Jesli zawiera np. funkcje matematyczne, to dlaczego mialyby wykonywac sie asynchronicznie? Co wtedy z odbieraniem wyniku? Ktos musialby czekac, sprawdzac czy juz jest wynik, i takie tam inne niepotrzebne komplikacje.
OK, a teraz jak kwestia wygląda z pluginami.
Tzn. mam aplikację klient - serwer. Na serwerze jest proces, który komunikuje się z klientem.
Do procesu są również dołączane różne pluginy, których zadaniem jest komunikacja z różnymi urządzeniami, a także operacje na bazie. Konkretnie komunikacja między procesem(w stylu: zmieniłem Ci coś w bazie), urządzeniem, a bazą danych.
Teraz więc pytanie - czy opłaca się to rozwalać na kilka wątków, czy nie?
Przypadek 1 - bez dodatkowych wątków.
Nie walczę z dodatkowymi rzeczami, jakimi są wątki ;)
Nie wiem jakie są minusy i czy są, ale plus to czas.
Przypadek 2 - rozdzielić aplikację na dwa wątki.
Pierwszy - wątek główny - komunikuje się z klientami
Drugi - odwołuje się do pluginów
Przypadek 3 - dla każdego pluginu wątek. Z tym, że nie wiem, ile pluginów będę miał, tak więc z tego co się orientuję, tracę kontrolę nad tym, czy zabiję procesor, czy nie :)
Który byłby najlepszy? Osobiście wybrałbym przypadek jeden, ale to głównie z tego powodu, że nigdy jakoś nie potrafiłem do końca zrozumieć tworzenia nowych wątków, o debugowaniu nie wspominając ;)