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.
Ennek a kódbeli megvalósítása az amit nem tudok. :-(
Kizárólag OOP alapon lehet? a Wiki OOP alapú példákat mutogat a szálakra, minden szálnál constructor init, destructor done, meg valami üzenetváltások a szálak közt... Számomra irtózatosan bonyolult :( :(
A párhuzamos programozásról egész estét betöltő előadássorozatot lehetne indítani. Rengeteg olyan hibalehetőség előjöhet ami egyszálú programozás során nem ,egyik leggyakoribb hiba a holtpont.
Egy lehetséges megoldás: pastebin pont com/2B34AQgS
Szerintem a Pascal ma már csak egy kezdő tanulónyelv, és ha már eljutottál a többszálas programozásig, akkor érdemes lenne váltanod. Ha másért nem, hát azért, mert minél többen használnak egy nyelvet és minél komolyabb célokra, annál könnyebben kapsz segítséget az interneten mindenféle problémákra, mondjuk mert sokan mások is beleütköztek már.
Tudom, hogy nem ez a válasz az eredeti kérdésedre, én egy másik nézőpontról beszélek.
"'Szerintem a Pascal ma már csak egy kezdő tanulónyelv' ez valóban így van, csak éppen a Lazarus"
Az első 20 legnépszerűbb nyelvbe benne van: [link]
A múltkor eltoltam a tömb 2 tartományra bontását.n = 100000-re elég nézni szerintem. Átírtam megfelelően ha n-t átírjuk akkor megfelelően működjön.
Egyébként a random függvény nem megfelelően működik többszálon, de ettől eltekintettem.
Egy szálon és két szálon is elvégzi a rendezést, de egy szál esetében is nem a főszálon hanem külön létrehoz egy szálat erre. : pastebin pont com/pZZzLXhb
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!