Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C++ Builder MultiThrading

[es] :: C/C++ programiranje :: C++ Builder MultiThrading

Strane: 1 2

[ Pregleda: 4242 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon C++ Builder MultiThrading11.07.2012. u 19:42 - pre 142 meseci
Razmišljam ali nikako da osmislim nekakav pametni primjer zadatka kojeg bi postavio pred studente a da uključuje korištenje thredova tj. paralelni rad, a nakon toga i nadogradnju tog zadatka na korištenje kritične sekcije...... ideje?
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 08:09 - pre 142 meseci
Prvi deo je kad imaš unapred sve podatke koje treba obraditi, pa se podaci podele među nitima tako da svaka nit ima otprilike istu količinu posla. Nezgodacija je što moraš za svaku nit unapred da odrediš količinu posla. Zato sledi drugi deo u kome se podaci ne raspodeljuju po nitima unapred, nego stoje na jednom mestu, a svaka nit kad postane slobodna uzme novi podatak za obradu. Za ovo konkurentno preuzimanje podataka treba ti kritična sekcija.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.static.sbb.rs.



+395 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 08:27 - pre 142 meseci
Napravi vise tredeova koji nesto citaju i upisuju u neki njima zajednicki niz .
Viva lollapalooza
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 08:34 - pre 142 meseci
Cilj je da se prvo napravi jedno rešenje sa nitima koje nema kritične sekcije, a onda da se uvede promena zbog koje je neophodno uvesti i kritične sekcije.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 08:48 - pre 142 meseci
Obrada poruka iz bazena poruka, gde svaka nit uzima po jednu poruku iz bazena, uklanja je iz bazena (ovo dvoje mora biti u jednoj sekciji zaštićenoj mjuteksom), a onda je obrađuje, moguće šaljući novu poruku u pazen (ubacivanje mora biti u sekciji zaštićenoj istim tim mjuteksom bazena poruka). Dalje, treba pomoću kritičnih sekcija napraviti klasu mjuteks.

Druga varijanta je da se vađenje iz bazena poruka i stavljanje poruke u njega radi jednoj funkciji koja je zaštićena kritičnom sekcijom.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.static.sbb.rs.



+395 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 08:50 - pre 142 meseci
Ok. Ajd' ovako mozda neki primer :
1. bez kriticnih sekcija - svaki thread odradjuje neku racunsku operaciju (npr. izracunava faktorijel od random broja) i ispisuje ga na ekran ako pretpostavimo da je printf thread safe
2. sa kriticnom sekcijom - svaki thread izvrsava istu gore navedenu operaciju sa ulazom koji je rezultat prethodnog threada upisanog u niz, a rezultat smesta isto u niz koji ce procitati sledeci thread.

Za pocetak setovati vrednosti niza na neke proizvoljne non- null vrednosti a bi rezultatii imali smisla.
Moze neka druga racunska operacija data kao primer jer ce faktorijel brzo da ode u beskonacnost .


Viva lollapalooza
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.guardster.com.



+9 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 08:54 - pre 142 meseci
Temeljna ideja je da se obrade thredovi a svakako bi bilo dobro dodati i kritičnu sekciju. Ono što bi bilo idealno jest da primjer bude vizualan pošto se radi u C++ Builderu, i to je ono što me najviše muči. Da nema kritične sekcije dao bi im da naprave npr. nekakav download manager koji iz listbox-a pokupi linkove koje treba skinuti, te za svaki link kreira poseban thread koji radi download tog linka (sadržaja). No teško mi smisliti onda gdje dodati kritičnu sekciju. Dodati ću i mutex ali to nije problem - npr. moraju napraviti da aplikacija ne smije dozvoliti višestruke instance.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.static.sbb.rs.



+395 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 09:04 - pre 142 meseci
Citat:

Da nema kritične sekcije dao bi im da naprave npr. nekakav download manager koji iz listbox-a pokupi linkove koje treba skinuti, te za svaki link kreira poseban thread koji radi download tog linka (sadržaja).
No teško mi smisliti onda gdje dodati kritičnu sekciju.

Pa nek svi donwload-uju i upisuju sadrzaj u jedan fajl. Tu ce morati da se odradi sinhronizacija .
A prvi primer bez kriticne sekcije nek svaki tred downloaduje u svoj poseban fajl .

Viva lollapalooza
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.guardster.com.



+9 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 09:08 - pre 142 meseci
Možda ovako: Svaki thread downloada u različiti fajl ali svi threadovi zajednički updataju isti ProgressBar koji prikazuje status svih downloada.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.3gnet.mts.telekom.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 09:13 - pre 142 meseci
VCL nije threadsafe. Barem nekada nije bio, ne znam sta se sada desava.

To znači da ako svaki taj download thread želi da upiše informaciju da je završio posao u neku zajedničku listu (TStringList, TListBox, i sl.) trebalo bi da imaš kritičnu sekciju za upis (Add, Insert) tog podatka. Tu možeš upotrebiti kritične sekcije.

A kada koristiš kritične sekcije, uvek je dobra ideja upariti ih s RAII-jem:
http://www.elitesecurity.org/t...esign-pattern-za-thread-safety

 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 09:13 - pre 142 meseci
Pazi samo posto VCL NIJE thread safe (osim poneke komponente ali neke nisu uopste, neke nisu skroz... neke jesu)
Nemoj im zadati zadatak gde ce im se naci neka prepreka u vidu sinhronizacije VCL-a za koji ne znaju.
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.guardster.com.



+9 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 09:27 - pre 142 meseci
Da. Svakako. Nisam ja zaboravio na Synchronize pri updateanju GUI-ja. Samo sam se htio fokusirati na ovako nešto:

CRITICAL_SECTION g_cs;
InitializeCriticalSection(&g_cs);
// …
EnterCriticalSection(&g_cs); // zaključaj CS
// …
LeaveCriticalSection(&g_cs); // otključaj CS
DeleteCriticalSection(&g_cs);

To su studenti koji se službeno prvi put susreću s programiranjem aplikacija koje imaju GUI tako da nije mi u cilju mučiti ih s previše toga. Jednostavno da naprave nekakvu smislenu aplikaciju u kojoj vide konkretni rezultat i primjenu teme (u ovom slučaju threadovi).


 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 15:33 - pre 142 meseci
Smem li da pitam gde predaješ i kojim studentima? Je li BCB zvanični nastavni alat?
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon Re: C++ Builder MultiThrading12.07.2012. u 22:06 - pre 142 meseci
Tehničko veleučilište u Zagrebu (Informatika + Računarstvo). Sve do sada je korišten Visual Studio i MFC, no s obzirom da dosadašnji nositelj predmeta godinama već nije našao vremena da osvježi gradivo i vježbe uspio sam da prođem s prijedlogom za C++ Builder.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: C++ Builder MultiThrading13.07.2012. u 09:11 - pre 142 meseci
Off topic

Smem li da pitam zašto nisi progurao Qt, koji je elem besplatan, elem traženiji na tržištu?
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.guardster.com.



+9 Profil

icon Re: C++ Builder MultiThrading13.07.2012. u 09:26 - pre 142 meseci
Nažalost ne smatram da imam toliko iskustva u qt-u da bi to mogao tako kvalitetno prenijeti drugima kao da je riječ o BCB-u kojeg koristim cca 10 godina. Da imamo osobu koja ima dovoljno iskustva u tome ne bi bilo nikakvih problema da se praktični dio radi qt + vcl ali ovako je meni osobno to srljanje u nešto što nisam toliko siguran.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: C++ Builder MultiThrading13.07.2012. u 09:43 - pre 142 meseci
To je taj problem. Ako sledećih deset godina budeš gurao C++ Builder postaćeš onaj što "nije našao vremena da osvježi gradivo" :)
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.guardster.com.



+9 Profil

icon Re: C++ Builder MultiThrading13.07.2012. u 09:45 - pre 142 meseci
C++ Builder i VCL se za razliku od MFC-a konstantno razvijaju tako da će svakako biti tu prostora za osvježavanje :) Npr. već sljedeće godine uvodim android i ios aplikacije čim za njih izađe podrška u sljedećem C++ Builderu XE3.
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: C++ Builder MultiThrading13.07.2012. u 19:35 - pre 142 meseci
RAD Studio XE2 vec ima podrsku za iOS.
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon Re: C++ Builder MultiThrading14.07.2012. u 08:55 - pre 142 meseci
Ja govorim o C++ Builderu.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C++ Builder MultiThrading

Strane: 1 2

[ Pregleda: 4242 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.