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?) -
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]
-
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
- Okos Otthon / Smart Home
- Linux kezdőknek
- Kész rémálom lesz Linuxot használni jövőre az USA egyes államaiban
- Anglia - élmények, tapasztalatok
- Xbox Series X|S
- Milyen billentyűzetet vegyek?
- Kormányok / autós szimulátorok topikja
- Abarth, Alfa Romeo, Fiat, Lancia topik
- Xiaomi 17 Ultra - jó az optikája
- Milyen egeret válasszak?
- További aktív témák...
- SAMSUNG 4TB 990 EVO PLUS M.2 NVME PCI-E 4.0 x4/ 5.0 X2 - Új - 7250-6300 MBs - Eladó!
- Dell XPS 13 Plus 9320 i7-1260P 32GB 512GB 4K+ TouchScreen 1 év garancia
- SAMSUNG 2TB 990 PRO M.2 NVME PCI-E 4.0 - Új, 1 év garancia - 7450-6900 MBs - Eladó!
- LG Gram 16 i7-1165G7 / 16GB RAM / 512GB SSD / 2.5K kijelző
- 5G! Lenovo ThinkPad P14s Gen 4 Intel Core i7-1370P RTX A500 32GB 1000GB 1 év teljeskörű garancia
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Samsung Galaxy S25 Ultra - Titanium Gray - 12/512GB - Újszerű állapot! 2028.11-ig Samsung Jótállás
- Samsung Galaxy S22 8/128GB - Kártyafüggetlen, Fekete - 1 Év Garanciával
- Apple iPhone 17 Pro Cosmic Orange 256GB karcmentes 100% akku (49 ciklus) garancia 2026.12.29-ig
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



