als je met Multithreading bezig bent ben ook gelijk bezig met het gebruiken van meerdere processoren of moet dat apart worden aan geschakelt ?
als je er meerdere hebt ben je met meerdere bezig imho
Doet iets met Cloud (MS/IBM)
maar gaat er om dat ze ook bv op 100% komen als die multitreading in visual c++ gebruik
Als je gebruik maakt van threads kunnen binnen 1 proces meerdere sequentiele executies parallel worden uitgevoerd. Threads zijn veel handiger voor concurrent-programming dan processen omdat ze toegang hebben tot hetzelfde geheugen-gebied.
Threads worden gescheduled op CPUs door het operating system. Een thread heeft daarbij een eigen stack, maar delen wel dezelfde geheugen-ruimte en kunnen dus bij elkaars data. Hiervoor zijn dan weer constructies nodig om toegang tot variabelen te beschermen.
Als het operating system ook threads ondersteunt kan deze er inderdaad voor zorgen dat 2 threads uit hetzelfde proces op verschillende CPUs worden gescheduled.
Maar ja, hiervoor moet het OS wel threads kennen. Als een OS geen threads kent (maar uiteraard wel processen) wordt er gebruik gemaakt van nep-threads. Hierbij kan er dan maar 1 thread per proces gescheduled worden, waardoor er dus niet meerdere threads uit 1 proces tegelijk gescheduled kunnen worden over meerdere processoren
.
Threads worden gescheduled op CPUs door het operating system. Een thread heeft daarbij een eigen stack, maar delen wel dezelfde geheugen-ruimte en kunnen dus bij elkaars data. Hiervoor zijn dan weer constructies nodig om toegang tot variabelen te beschermen.
Als het operating system ook threads ondersteunt kan deze er inderdaad voor zorgen dat 2 threads uit hetzelfde proces op verschillende CPUs worden gescheduled.
Maar ja, hiervoor moet het OS wel threads kennen. Als een OS geen threads kent (maar uiteraard wel processen) wordt er gebruik gemaakt van nep-threads. Hierbij kan er dan maar 1 thread per proces gescheduled worden, waardoor er dus niet meerdere threads uit 1 proces tegelijk gescheduled kunnen worden over meerdere processoren
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
ja dat wou ik weten maar dat ondersteun win98 wel en hoger ook maar niet alle smp
en dusMenblack: ja dat wou ik weten maar dat ondersteun win98 wel en hoger ook maar niet alle smp
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
Waar je threads gescheduled worden is aan het OS. Win9x schedulet alle threads op een proc ( want geen SMP ), WinNT zal de threads op meerdere procs uitvoeren.
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
uhm, Menblack had het over processoren, niet over processenOp zaterdag 16 februari 2002 17:32 schreef mbravenboer een verhaal over threads en processen
De WinNT API bevat een functie waarmee je een thread op een bepaalde processor kunt forceren. Volgens mij kun je, zonder gebruik van die functie, er niet vanuit gaan dat de 2 threads in je programma altijd op verschillende cpu's zullen draaien (als die aanwezig zijn natuurlijk
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.
Ik denk het wel en wordt bepaald door de SMP ondersteuning van je OS kernel of die SMP ondersteund.Op zaterdag 16 februari 2002 17:00 schreef Menblack het volgende:
als je met Multithreading bezig bent ben ook gelijk bezig met het gebruiken van meerdere processoren of moet dat apart worden aan geschakelt ?
En dat is dus win NT of hoger
met uitzondering van win XP home (is NT based met SMP disabled)
Daarbij beheerd de kernel alle tread je kan erbij wel preoriteiten instellen dus de timeslice die ze krijgen vergroten of verkleinen die verdeeld worden over de CPU's weet niet of hier ook wat kan worden ingesteld.
X399 Taichi; ThreadRipper 1950X; 32GB; VEGA 56; BenQ 32" 1440P | Gigbyte; Phenom X4 965; 8GB; Samsung 120hz 3D 27" | W2012SER2; i5 quadcore | Mac mini 2014 | ATV 4g | ATV 4K
En ik had het over allebeiOiSyN: uhm, Menblack had het over processoren, niet over processen
Ik zei ongeveer dit:
Als een OS kennis heeft van threads en meerdere processoren ondersteunt zal hij threads uit hetzelfde processen op verschillende processoren kunnen schedulen. Uiteraard kan een OS hier zo dom mee omgaan als hij zelf wil, maar het is dus wel mogelijk. In hoeverre dit op MS Windows NT/2000/XP ook goed geregeld wordt weet ik niet.
Als een OS geen kennis heeft van threads heeft hij alleen kennis van processen. Het OS kan dan alleen processen schedulen en is dus niet instaat om threads uit hetzelfde proces tegelijk te laten draaien over verschillende processoren. Er worden dan voor multi-threading nep-threads gebruikt die qua performance helemaal niets toevoegen...
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
maar je kan het forceren bij nt of 2k op op de ander andere proccesor te laten werken en welke lib is dat ???
Een voorbeeld hiervan is de FreeBSD (4.x) kernel, die niet in staat is om threads uit hetzelfde proces over meerdere processoren te verdelen. Dit wordt overigens in de 5.0 release verholpen.Op zondag 17 februari 2002 17:36 schreef mbravenboer het volgende:
Als een OS geen kennis heeft van threads heeft hij alleen kennis van processen. Het OS kan dan alleen processen schedulen en is dus niet instaat om threads uit hetzelfde proces tegelijk te laten draaien over verschillende processoren. Er worden dan voor multi-threading nep-threads gebruikt die qua performance helemaal niets toevoegen...
Dit soort overwegingen zijn vooral van belang bij 'dedicated' servers, die voornamelijk één enkele applicatie zullen draaien (bijvoorbeeld een databaseserver).
Om op de vraag terug te komen: het verschilt per operating system of de threads al dan niet automatisch over verschillende processoren worden verdeeld. Voor zover ik weet is er geen standaardmethode voor, dus zal je de API van je operating system door moeten nemen.
Pagina: 1