Wpis z mikrobloga

#programowanie #cpp

Mam problem z pamięcią dzieloną (Named Shared Memory).
Mam 3 procesy, który każdy z nich ma udostępnioną pamięć (wyjście i oddzielnie wejście (są to struktury)).
Dane aktualizuje co 40ms (wejście i wyjście) w każdym z procesów.

Przykładowa funkcja udostępniająca pamięć:
http://wklej.org/hash/3d92092e78d/

Przykładowa funkcja aktualizująca pamięć (wyjście):
CopyMemory((PVOID)outpBuf, &coreout, sizeof(XXXDataTypedef));

Przykładowa funkcja tworząca zaczep pamięci udostępnionej:
TCHAR szNameCore
in[] = TEXT("Global\YYY");
inhMapFile = OpenFileMapping(FILEMAPALLACCESS, FALSE, szNameCorein);

Przykładowa funkcja pobierająca pamięć:
YYY
DataTypedef *temp =
(YYY_DataTypedef *) MapViewOfFile(
modhMapFile[modid], FILEMAPALLACCESS,
0,
0,
sizeof(SLAVEMODULEDATA_DataTypedef)
);

Problem jest tego typu, że po około 6-7min stabilnej pracy (zawsze), taka komunikacja przestaje działać.
Co może być przyczyną? Lub jakie są najczęstsze przyczyny takiego zachowania?
  • 20
  • Odpowiedz
@Feargan: @wolodia: Zmieniłem "uprawnienia". Wejście ma READ a wyjście ALL_ACCESS. Nie ma żadnej różnicy.
Najciekawsze jest to, że jeden proces, nie może odebrać struktury z pamięci, która jest aktywna. Pewnym sposobem to sprawdziłem, tak jakby ten proces stracił uprawnienia czy coś takiego.
  • Odpowiedz