QuadMan napisał(a):
Może ktoś mądrzejszy na to odpowie?
Nie wiem, czy w tej sytuacji odpowiadać
Na wszelki wypadek zaznaczę, że wcale nie uważam się za mądrzejszego
marpol1992 napisał(a):
Sprawa rozchodzi się o dostęp dwóch obiektów tej samej struktury do jednej funkcji która posiada zmienne typu static. Dokładnie jak poradzić sobie z tym, że opisywana funkcja jest wykorzystywana na przemian w dwóch przerwaniach
Nie jestem pewien, czy dobrze rozumiem o co chodzi (przydałby się chociaż fragment kodu), ale jeśli funkcja nie jest reentrant ze względu na to, że wykorzystuje zmienne statyczne, które zachowują wartość pomiędzy wywołaniami funkcji, można to rozwiązać mniej więcej w taki sposób:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W ten sposób każda funkcja wywołująca ma swój komplet zmiennych statycznych, więc jeśli funkcja wywoływana zostaje przerwana i ponownie wywołana przez inny wątek, operuje po prostu na innych danych.
Oczywiście wszystko zależy od implementacji i powodu, dla którego funkcja jest non-reentrant (przyczyny mogą być różne). Trzeba też uważać na inne rzeczy - zmienne globalne, zwracanie wskaźników do zmiennych statycznych wewnątrz funkcji, funkcje wywoływane wewnątrz funkcji reentrant również muszą takie być...
Trochę można o tym poczytać np.
tutaj