Kezdőoldal » Számítástechnika » Programozás » Free Pascal-ban írt már...

Free Pascal-ban írt már valaki Multithread (több szálon futó) programot és ha igen, elmagyarázná, miként kell ezt?

Figyelt kérdés

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.



2015. máj. 26. 18:38
1 2
 11/20 A kérdező kommentje:

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... :-( :-( :-(

2015. máj. 27. 18:55
 12/20 anonim ***** válasza:

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?

2015. máj. 27. 19:07
Hasznos számodra ez a válasz?
 13/20 A kérdező kommentje:

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.

2015. máj. 27. 20:26
 14/20 anonim ***** válasza:

"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... :-( :-( :-("

2015. máj. 27. 21:08
Hasznos számodra ez a válasz?
 15/20 A kérdező kommentje:
Ha szövegértelmezési problémáid vannak, nem kell írni, pláne kötekedni...
2015. máj. 27. 21:16
 16/20 anonim ***** válasza:

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.

2015. máj. 28. 00:00
Hasznos számodra ez a válasz?
 17/20 A kérdező kommentje:

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...

2015. máj. 28. 05:45
 18/20 anonim ***** válasza:
0%
Ne kamuzzál már, rohadtul egyértelmű, hogy miről beszéltél.
2015. máj. 28. 08:33
Hasznos számodra ez a válasz?
 19/20 A kérdező kommentje:

Az értelmes válaszolóknak nagyon szépen köszönöm.

Utolsó:

Továbbbra sem érdekel a kötekedésed.

2015. máj. 28. 19:03
 20/20 anonim ***** válasza:
Valamilyen szinten a Pascal is támogatja az objektumorientált programozást (nekem kellett az egyetemen Turbo Pascalban nagyon egyszerű OO programot írnom, kb. "rajzold ki a pontot" szinten), csak éppen nem bátorítja. Finom különbség. :-)
2015. máj. 28. 19:29
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!