Czy dll działa w innym wątku?

0

Cześć, nie mogę nigdzie znaleźć takiej informacji.
Na chłopski rozum - biblioteka dll jest swego rodzaju oddzielnym programem. Więc powinna pracować w swoim wątku. Teraz pytanie, czy naprawdę tak jest?

Czy biblioteka dll pracuje w osobnym wątku niż aplikacja, która wywołuje jej funkcje?

0

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.

0
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 ;)

0

normalnie to jest tak, że to klient ma swój wątek a nie plugin czy coś innego. BTW weź pod uwagę, że nie wszystkie komponenty bazodanowe są threadsafe

0

Nie rozumiem tak scislego powiazania watkow z pluginami. To sa logicznie 2 odrebne rzeczy. Jeden (pluginy) to wyodrebnienie funkcjonalnosci, drugi (watki) to sposob przetwarzania danych. Plugin to nie osobna aplikacja w tym wypadku a zbior funkcjonalnosci, ktore beda wolane przez aplikacje macierzysta. Jesli jest mozliwosc/potrzeba odpalenia danej funkcjonalnosci w osobnym watku to nic nie stoi na przeszkodzie. Jesli natomiast na wynik operacji trzeba i tak poczekac, to watek jest tu zbedny.

Przyklad:

  1. Plugin bez watku - plugin obsluguje dostep do bazy danych. Aplikacja zapisuje dane i MUSI poczekac na potwierdzenie wykonania operacji, bo wymagaja tego zalozenia programu. Np. zapisywanie danych partiami, po potwierdzeniu poprzedniej.
  2. Plugin z watkiem - plugin obsluguje skomplikowane obliczenia matematyczne. Uzytkownik zadaje dane, serwer odpala watek obliczen i sie kreci. Raz na sekunde odpytuje watek o postep i informuje o nim klienta.

Oczywiscie przyklady banalne, ale watek moze sie przydac, a nie musi. Zalezy w jaki sposob chcesz z funkcjonalnosci korzystac.

0

OK, dzięki.
Faktycznie będę musiał czekać na wynik zapisu do bazy.

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