Aktív témák
-
Miracle
senior tag
shared memoryt kulon processzek kozott egyszeruen tudsz letrehozni anonim memory-mapekkel.
[link]
de mielott nagyon belemelegszel a parhuzamos programozasba gondold at ketszer is, hogy szukseged van-e neked erre, hacsak nincs valodi legalabb ketutas renszered, es nem szamolsz TENYLEG nagy szamokat akkor amit igy irsz joval lassabb lesz, mint ha egy jol optimalizalt linearis kodot keszitenel. persze ha a parh. program elkeszitese a lenyeg, akkor nem szoltam -
Jester01
veterán
Ez egyáltalán nem mûködhet, mert a fork után már külön memóriaterülettel rendelkeznek a processzek (technikailag copy-on-write, de ez nem érdekes).
Szóval az nChild a gyerekprocesszben növekszik, nem a szülõben. Magyarul rossz helyen van, az if(fork() == 0) else ágába kell tenni.
(A kódrészletbõl nem látszik, de a tomb az ugye shared memory?) -
Blackmate
őstag
Huhh, ennyire nem vagyok benne. Kitaláltam egy dolgot: nyílvántartom a processzek számát. Ha elfogynak (nullák lesznek), akkor kiiratom őket. Csak valamiért nem akar működni. Egyszerűen nem nullláz ki semmit. Mi lehet a baj vele?
A kód lényege (a tömb nem prím elemeinek nullázása):unsigned long int nChild = 0; //gyerek processzek szama
unsigned long int j=0; //ciklusvaltozo
unsigned long int kFelso = ceil((double)(sqrt(felso)));
//elegendo a felso hatar negyzetgyokeig vizsgalni a szamokat
//na ez a kFelso az, csak epp felfele van kerekitve
for (i=0;i <= kFelso; i++)
{
if (nChild <= MAX_PROC)
{
if (fork() == 0)
{
nChild++;
for (j=0; j <= kFelso; j++)
{
if (tomb[j] % i == 0 && tomb[j] != i)
{
//szemaforral nullazom a tomb elemeit
SemBuf.sem_op = -1;
semop(semID, &SemBuf, 1);
tomb[j] = 0;
SemBuf.sem_op = 1;
semop(semID, &SemBuf, 1);
}
exit(0);
}
}
}
else
{
wait(NULL);
nChild--;
}
}[Szerkesztve]
-
Blackmate
őstag
Nem találtam ilyen témát, úgyhogy nyitottam egyet.
Van egy beadandó feladatom, amiben egy előre megadott intervallumban prímszámokat kell keresnem, és a végeredményt kiiratni.
Maga az algoritmus meg van: intervallum elemeit egy dinamikus tömbben tárolom, és a 2,3,4...-el való oszthatóságát vizsgálom, és ami maradék nélkül osztható azt kinullázom.
Attól IPC a feladat, hogy egyszerre több proceszt indítok (max. 10-et), ami vizsgálja az oszthatóságot.
A problémám az, hogy az eredményeket hamarabb kiíratom, mint ahogy az összes kis gyerekprocessz befejeződött volna, így egymás után futtatva más-más eredményt kapok.
Abban kérnék tanácsot, hogy hogyan tudnám várakoztatni azt a program részt - ami a kiíratással foglalkozik - , addig amíg az összes gyerekprocessz befejeződött?
Aktív témák
- Samsung Galaxy S25 Ultra 12/256GB Újszerű.Kártyafüggetlen,Dobozos,Tartozékaival. 1 Év Garanciával!
- Bomba ár! Lenovo ThinkPad E540 - i7-4702MQ I 8GB I 500GB I Nvidia I 15,6" FHD I CAM I W10 I Gari!
- Bomba ár! HP EliteBook 840 G3 - i7-6GEN I 8GB I 256GB SSD I 14" FHD I Cam I W10 I Garancia!
- Bomba ár! Dell Latitude E7450 - i7-5GEN I 8GB I 256SSD I 14" FHD I HDMI I Cam I W10 I Garancia!
- Bomba ár! Dell Latitude E7270 - i7-6GEN I 8GB I 256GB SSD I 12,5" FHD I HDMI I CAM I W10 I Gari!
- Samsung Galaxy Z Fold 6 Silver Shadow Hajlítható csúcstechnológia, AI extrákkal 2028. 01.24 Gari
- Konzol felvásárlás!! Xbox Series S, Xbox Serries X
- LG 32GS94UX - 32" OLED / UHD 4K / 240Hz - 480Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
- HIBÁTLAN iPhone 13 mini 256GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3440, 90% Akkumulátor
- BESZÁMÍTÁS! 16GB (2x8) Kingston HyperX Fury 1600MHz DDR3 memória garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest