Jeg forstår stadig ikke helt spg. Hvad mener du med "segmenterer"? Mener du bruge etstykke hukommelse til flere instancer af en struct? Eller opdeling med forskellige beskyttelser? Hvad er "shared memory"? er det delt mellem tråde eller processer eller funktioner?
struct foo { int i; int j; };
void doit(void *sharedMem) { struct foo* foop = (struct foo*)sharedMem; /* sæt 'i' i den første instans */ foop[0].i = 4; /* sæt 'i' i den 6. instans */ foop[5].i = 4; }
slashdotdoek: selvom jeg laver size_t kæmpe stor kan jeg jo alligevel kun placere én struct i den delte hukommelse da jeg, for at placere noget i hukommelsen, gemmer dataene i den pointer jeg shmat()'er til, eller hvad?
Problemet er at jeg gerne vil have flere structs i den samme delte hukommelse
hehe ja den er jo lidt tricky, den delte hukommelse er jo et struct. Men jeg forstår ikke hvorfor du vil have 10 når du kan nøjes med ét, måske er det fordi dine planer med det ikke er helt gennemskuelige. Hvis du vil lave et træ eller en liste, så er det jo nok med ét. Ideen med shared memory er jo at man tilgår den samme hukommelse, hvis du alligevel vil lave flere forskellige, så er det måske en idé med flere shm'er.... hvis jeg har misforstået siger du bare til :p
Kan du så ikke uddybe hvordan du vil lave et træ, hvor hvert element i træet indeholder en int, en string og en double?... hvor hele træet skal ligge i shm'en?
Jeg kan ikke se man kan løse det smartere end at lade hvert element i træet være struct i sig selv?
hele træet behøver jo ikke at ligge i shm, det skal kun være anetræet, de andre structs/noder/whatever kan du jo gøre tilgængelig for shared på andre måder, ideen med shm er jo bare muliggøre ipc. Så kun én shm, men shm struct kan jo godt have underliggende structs.
hmm... så er det måske bare mig der forsøger at bruge shm forkert... jeg synes bare det ville være smart at have samtlige data liggende i en fælles tilgængelig hukommelse, så der ikke er en process der skal styre adgangen til træet, men jeg finder på en anden løsning... tak for diskutionen
oki no prob, husk at hastighed også er en vigtig ting med ipc, specielt de kritiske steder.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.