Om zelf af te trappen: in mijn dagelijks werk maak ik relatief beperkt (min of meer automatisch) gebruik van multiprocessing: in webapplicaties is multitasking min of meer een gegeven (de server handelt immers meerdere verzoeken "tegelijkertijd" af), zonder dat daar direct of specifiek voor mij als applicatieprogrammeur rekening mee moet worden gehouden.
Natuurlijk is het zo dat je toegang tot bepaalde resources moet synchroniseren, maar een behoorlijk deel van de parallelisatie gaat "automagisch" goed. Uiteraard is dit een relatief beperkte - en makkelijk te begrijpen - vorm van parallelisatie: het simpelweg "naast elkaar" uitvoeren van meerdere instanties van dezelfde seriële taak.
Buiten mijn werk om hobby ik ook nog wel eens wat in de gaming sfeer (en dan bedoel ik dus het programmeren daarvan). Vrijwel alle literatuur daaromtrent gaat uit van een single-threaded programmeermodel waarbij de "main loop" alle taken sequentieel uitvoert, teneinde uiteindelijk een serieel device (met name de grafische kaart/monitor) op tijd te kunnen voorzien van informatie. Optimalisaties zijn gericht op het zo kort mogelijk houden van de sequentieel uitgevoerde taken.
Het lijkt mij erg interessant te onderzoeken hoe parallel computing in games voordelen kan opleveren. Mijns inziens zijn de potentiele voordelen enorm, juist omdat je vaak te maken hebt met asynchrone processen: het verwerken van input van de gebruiker, het uitrekenen van acties van de AI elementen in een game, het berekenen van het fysieke model (de "simulatie" van het door de speler bestuurde element), het berekenen van het visuele model voor output naar het scherm, het berekenen van het aurale model voor output naar de speakers, etc.
Maar om dit behapbaar te houden zul je je goed bewust moeten zijn van de specifiek uitdagingen m.b.t. asynchrone verwerking. Vandaar dit topic
Ik ben benieuwd naar bestaande kennis en ervaring met concurrent programming en waarom dit zo vaak als buitengewoon ingewikkeld wordt ervaren. Ik heb zelf namelijk het gevoel dat concurrent programming niet heel veel anders is dan bestaande vormen van programmeren. Het stelt echter wel hogere eisen aan de juiste mate van abstractie en inkapseling van data (om in OO termen te spreken) en straft fouten daarin harder af.
[
Voor 17% gewijzigd door
Herko_ter_Horst op 03-07-2008 15:10
]