Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Funkcje i wielowątkowość

Witam,

Mam takie pytanie czy jeżeli stworze sobie funkcje w posgresie a w aplikacji uruchomię parę wątków w one odwołają sie do tej funkcji w tym samym czasie to jest taka możliwość że pomimo różnych parametrów funkcja zwróci taki sam wynika dla każdego wątku ?

konto usunięte

Temat: Funkcje i wielowątkowość

Oczywiście, że jest taka możliwość. Albo nie ma, zależnie od tego co ta funkcja robi.

Ogólnie, to jak masz a aplikacji kilka wątków i każdy nawiąże połączenie do postgresa, to po stronie bazy wystartuje kilka procesów i każda funkcja będzie odpalona przez jeden z tych procesów.

Teoretycznie mogę sobie wymyślić policzalną liczbę funkcji, które zwrócą ten sam wynik niezależnie, albo zależnie, od postaci parametrów.
Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Funkcje i wielowątkowość

Dziękuje za odpowiedź.

Faktycznie każdy proces ma swoje połączenie do bazy danych.

Pisałem ponieważ miałem taki problem, że była funkcja
 operato_info(IN id BIGINT) 
gdzie jako parametr przesyłałem unikalne id danego operatora.

Program do odświeżania informacji o każdym operatorze uruchamiał odrębny watek gdzie każdy miał swoje id od danego operatora i właśnie miałem taki problem, że pomimo iż funkcja była wywoływana z innym id ( sprawdzałem w debugerze ) to zawracana była informacja raz dla własnie tego operatora a raz dla innego o innym id w bazie niż te co zostało przekazane jako parametr.

Szukałem problemu i myślałem właśnie, że coś takiego mogło sie pojawiać, że wywołanie tej samej funkcji przez różne wątki w tym samym czasie, pomimo różnego id zwracały ten sam wynik bo na przykład do watek1 zostały przesłane te same dane co do watka2 ponieważ wykonały tą funkcje w tym samym czasie.

W każdym bądź razie z tego co rozumiem co Pan Szymon napisał że nie powinno być takiego problemu z różnych połączeń?

Aha no i najważniejsze już znalałem problem, miałem błąd właśnie we funkcji
 operato_info(IN id BIGINT) 


z przyzwyczajenia napisałem
 id = @id 
a nie
id = $1

w zapytaniu SQL



Wyślij zaproszenie do