[C++] Tutorial Threads

Pagina: 1
Acties:

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 19-05 12:01
Ik denk dat ik in een programma wat ik nu aan het maken ben threads nodig te hebben. De bedoeling is, dat gelijktijdig 2 stukjes code uitgevoerd worden. Ik heb op internet gevonden dat het gebruik van een Thread hiervoor makkelijk is.
Ik gebruik Borland C++ builder 6 en daarin kan je uitteraard Threads gebruiken.

Ik heb diverse site's doorlezen die temaken hebben met Threads. Een site waar ik erg veel aan heb gehad is http://www.pergolesi.demon.co.uk/prog/threads/ToC.html. Hierop staat precies uitgewerkt wat Threads zijn en hoe er mee gewerkt kan worden.
Echter een passend voorbeeld heb ik nog niet kunnen vinden. Het is allemaal erg complex wat ik op internet heb gevonden. Op deze site http://linuxselfhelp.com/HOWTO/C++Programming-HOWTO-18.html staat ook een voorbeeld. Hier gaan ze direct er erg diep op in.
Weet iemand misschien een site of een voorbeeld waar in heel simpel het gebruik en de werking van een Thread wordt uitgelegd? Een voorbeeld zou kunnen zijn, 2 progressbarren naast elkaar oid.
Alvast bedankt! O-)

Exploring the world by bicycle! cyclingsilk.wordpress.com


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 02:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Uh, het is toch vrij straightforward? Je roept CreateThread () aan, waaraan je een functiepointer meegeeft, die vervolgens vanzelf wordt aangeroepen in de nieuwe thread.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 19-05 12:01
Dat idee snapte ik.. Echter vindt ik het nog erg complex. Ik heb zelf geprobeerd 2 threads te maken, met daarin elk een status bar. Ik ben er gewoon nog niet uit hoe het werkt. Ik ben dus opzoek naar een simpel voorbeeld zonder al te veel poespas erom heen. Ik kan gewoon erg weinig vinden op Inet en daarom vraag ik hier jullie hulp. ;)

Exploring the world by bicycle! cyclingsilk.wordpress.com


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Kijk is op MSDN, staan meerderen voorbeelden en dacht ik zelf een tutorial. Hier is echt heel veel te vinden over threading.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:34
Iets waar je goed moet op letten in multi-threading/Windows programmeren is dat de enige thread die rechtstreeks je windows controls mag aanroepen, de UI thread is. De UI thread heeft nl. die controls gecreeërd.
Als je die controls dus in een andere thread wilt aanspreken, zal je dat via een omweg moeten doen.

https://fgheysels.github.io/


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Ik snap het probleem niet echt :? Je snapt al wat een thread is, wat wil je er dan in godesnaam nog meer over weten? In BCB heb je ook nog eens TThread, waarmee het helemaal eenvoudig is: overload die class, implement de Execute functie en roep Start aan. Schrijf in je threadfunctie vervolgens wat rotzooi naar een file en je bent er toch?

Je kunt idd niet eenvoudig UI elementen aansturen vanuit 'verkeerde' threads overigens, en de echte pret van multithreading begint pas zodra je moet synchronizeren, maar ook dat kun je redelijk snel vinden als je op 'mutex' zoekt :P

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 02:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

whoami schreef op 06 oktober 2004 @ 12:04:
Iets waar je goed moet op letten in multi-threading/Windows programmeren is dat de enige thread die rechtstreeks je windows controls mag aanroepen, de UI thread is. De UI thread heeft nl. die controls gecreeërd.
Als je die controls dus in een andere thread wilt aanspreken, zal je dat via een omweg moeten doen.
Dat is ook niet helemaal waar, je kunt prima messages senden naar controls die door een andere thread gecreeerd zijn. Je moet er alleen voor zorgen dat de thread die de windows heeft gecreeerd ook de messageloop bevat, wat dus als gevolg heeft dat events ook in die thread afgehandeld worden.

[ Voor 15% gewijzigd door .oisyn op 06-10-2004 13:33 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 19-05 12:01
Ik heb eindelijk een werkend programmatje gemaakt. Erg basic, namelijk 2 progressbars. Ik heb dit voorbeeld uit het Dikke Borland C++ Builder 6 boek.
Ik zie alleen dat de progressbars niet gelijk oplopen. Het loopt meer sequentieel. Is dit de bedoeling??
Even een stukje van de Code:
code:
1
2
3
4
5
6
7
8
9
onder de button start:

TPriorityThread *First;
First = new TPriorityThread (false);
First ->Priority = tpNormal;

TPriorityThread *Second;
Second = new TPriorityThread (true);
Second ->Priority = tpNormal;


Wie kan mij trouwens vertellen wat die True en False beteken achter new TPrioityThread? Is dit een standaardcode, of is dit een waarde die alvast meegegeven wordt aan de nieuwe Thread :?

Exploring the world by bicycle! cyclingsilk.wordpress.com


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:34
2 Threads lopen ook niet tegelijkertijd, het lijkt alleen maar zo.
Iedere thread krijgt een 'time-slice' waarin hij z'n ding mag doen. Eens die time - slice afgelopen is, krijgt een andere thread de mogelijkheid om z'n ding te doen, en moet die eerste thread wachten tot het weer aan hem is.

De betekenis van die true en false kan je wel opzoeken in de help. Kijk eens naar de constructor van de TPriorityThread class, en je zult zien voor wat die true/false dient.

https://fgheysels.github.io/


  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 19-05 12:01
thnx _/-\o_ ik heb et gevonden!! bedankt weer allemaal :*)

Exploring the world by bicycle! cyclingsilk.wordpress.com

Pagina: 1