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
- Robogó, kismotor
- Nothing Phone (2) - több, mint elsőre látszik
- Formula-1
- Jófajta rendereken a Motorola következő kagylója
- Fűnyíró topik
- iPhone topik
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- gban: Ingyen kellene, de tegnapra
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Futás, futópályák
- További aktív témák...
- Samsung S22+ 256GB Phantom Black - Karcmentes, megkímélt állapotban!
- HP 255R G10,1 hónapos, 3 év HP Care garancia (Ryzen 5 7535U, 16GB DDR5 RAM, 512GB SSD, Win 11 home)
- DELL Latitude 5480,14",HD,i5-6300U,8GB DDR4,256GB SSD,WIN11
- Lenovo ThinkPad L14 Gen 4 - 14" - Ryzen 5 pro 7530U, 16-32GB RAM, SSD, jó akku, számla, 6 hó gar
- HP ZBook Fury 15 G7 15.6" 4K IPS i9-10885H 16GB 512GB NVMe IR kam gar
- Lenovo ThinkPad dokkolók: USB-C 40A9/ 40AY/ 40AS/ Thunderbolt 3 40AC/ Hybrid USB-C DisplayLink 40AF
- Asus RP-AC87 AC2600 Wi-Fi range extender
- AKCIÓ! MacOS 26! UTOLSÓ GEN iMac 27" 5K i7-10700K 64GB RAM 512GB NVMe Radeon Pro 5700 XT 16GB gar
- Dell Latitude E7240 Core I7-4600U CPU / 4GB DDR3 RAM laptop
- Dell Latitude 5290, 2 az 1 ben,12.5",FHD,i5-8350U,8GB DDR4,256GB SSD,WIN11
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



