Free Pascal-ban írt már valaki Multithread (több szálon futó) programot és ha igen, elmagyarázná, miként kell ezt?
A Wiki rendkívüli bonyolultsággal írja le, nincs valami séma, amit bármely programra alkalmazva működne a dolog?
Tartok tőle hogy nem, mert a Wiki-ben háááááááát azt megértettem, hogy alaposan meg kell ogndolni hogy szükség van -e a többszálúsításra, mert nem egyszerű :(
Sajnos nem igazán találtam jó és megfelelő kulcsszavakat...
Természetesen a lényeg az lenne, hogy minden szál dolgozzon a feladaton, egyfajta párhuzamos munkavégzés, feladatelosztás...
Például az alábbi kód miként futna több szálon?
Program Sorting;
const
n = 999000;
var
data : array [1..n] of integer;
i, j, t: LongInt;
begin
for i := 1 to n do
data[i]:=random(32768);
for i := 1 to n-1 do
begin
for j:=i+1 to n do
begin
if data[i]<data[j] then
begin
t:=data[i];
data[i]:=data[j];
data[j]:=t;
end;
end;
end;
end.
Nagyon köszönöm a válaszokat, különösen a belinkelt megoldásokat.
Azt hiszem, ezt " nem nekem találták kki", rendkívüli mértékben bonyolultnak tűnik, hát ha még több szálon dolgozna a program mint két szálon, ebbe már bele sem érdemes gondolni milyen elmondhatatlanul bonyolult... :-(
Nagy kár hogy nincsen valamiféle automatikus "számításmegosztás" amit alkalmazni tudna a Pascal és nem kellene megírni semmit... :-( :-( :-(
A párhuzamos programozás nehéz, de nem lehetetlen.
Sok sok elméletet érdemes olvasni és tanulmányozni előtte.
Amit meg a végén írsz vicc.
Milyen kár, hogy nincs egy "write program" gomb és akkor megírná a komplett programot magától, nem?
Félreértetted, nem olyat kerestem, ami megírja magától a kódot...
A Linux Kernel is tudja önmagától a "symmetric Multiprocessing"-et csak be kell kapcsolni.
"Félreértetted, nem olyat kerestem, ami megírja magától a kódot..."
"Nagy kár hogy nincsen valamiféle automatikus "számításmegosztás" amit alkalmazni tudna a Pascal és nem kellene megírni semmit... :-( :-( :-("
Szívesen.
Egyetlen szál esetén egyszerre csak 1 utasítást hajt végre a program végrehajtása egy egyenessel szemléltethető.
Két szál esetén a program végrehajtása egy síkkal ábrázolható melyben a 2 szál valamilyen pályát ír le a síkban. Végrehajtási időt programozási elméletben (többnyire azért hogy ne függjön olyan technikai esetlegességtől, hogy mennyi processzor sebessége) a végrehajtott műveletek számát értjük (vagy ennek valamilyen "C">1 konstanszor kevesebbszeresét).
Legegyszerűbb esetben a két szál párhuzamos egymással. Egy sarokeset az ha merőlegesek egymásra. Ez mit jelent?
Azt hogy egymás után futnak le, mintha szekvenciálisan egymás után lennének egy egyszálú programba. Egy szál össze vissza görbülhet ebbe a síkba, de önmagát nem metszheti legalább is egyelőre, ha metszené önmagát akkor időgép lenne.
Egy 3 szálú program térben szemléltethető, ahol a szálak a térben kanyarognak. 4 szálú 4 dimenziós térrel szemléltethető vagyis ez már nem képzelhető el szemléletesen. stb.
Egyetemeken egész kurzusok szólnak párhuzamos programozásról, nagyrészt elmélet pl. : [link]
A free pascal az imperatív (procedurális) paradigmájú prog. nyelv mely támogatja az objektumorientált paradigmát.
Speciális esetben párhuzamos paradigmájú prog nyelvet használnak. Az occam egy párhuzamos programozási nyelv : [link]
Ebbe pl ha egy tömböt feltöltesz pl 0-ákkal akkor az valamilyen tetszőleges sorrendbe párhuzamosan történik nem a legkisebb indexű elemtől a legnagyobbig, de természetesen lehet úgy is.
Nagyon köszönöm a magyarázatokat.
Amit pedig 68%-osnak írtam, aki ezt írta nekem:
"Amit meg a végén írsz vicc.
Milyen kár, hogy nincs egy "write program" gomb és akkor megírná a komplett programot magától, nem?"
Ilyen automatizálásról nem beszéltem, másról beszéltem, de valahogy nem tudja értelmezni...
Az értelmes válaszolóknak nagyon szépen köszönöm.
Utolsó:
Továbbbra sem érdekel a kötekedésed.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!