Multithreading: Forskelle mellem versioner

Fra Wikipedia, den frie encyklopædi
Content deleted Content added
No edit summary
Linje 1: Linje 1:
'''Multithreading''' er en måde at distribuere opgaver i programmer mellem flere, alenestående men samarbejdende tråde i programmet, og adskiller sig fra multiproces-programmer ved, at der ikke anvendes flere instanser af samme program samtidig, med dertil hørende [[IPC (programmering)|interproceskommunikation]], men at al håndtering af koordination og kommunikation foregår inde i selve programmet, samt at programmerne nemt og elegant kan anvende samtlige globale [[variabel|variable]].
'''Multithreading''' er en måde at distribuere opgaver i programmer mellem flere, alenestående men samarbejdende tråde i programmet, og adskiller sig fra multiproces-programmer ved, at der ikke anvendes flere instanser af samme program samtidig, med dertil hørende [[IPC (programmering)|interproceskommunikation]], men at al håndtering af koordination og kommunikation foregår inde i selve programmet, samt at programmerne nemt og elegant kan anvende samtlige globale [[variabel|variable]].


Hej da er en forkortelse for mongolt møgbarn!
== Anvendelse af multithreading ==
Da tråde elegant kan distribueres over flere [[CPU|processorer]], kan maksimal ydeevne for [[SMP|multiprocessor]]-systemer nåes ved enkel og effektiv anvendelse af multithreading, uden det store overhead multiproces-programmer skaber hos [[operativsystem]]et.


== Eksempel ==
== Eksempel ==

Versionen fra 1. nov. 2006, 09:43

Multithreading er en måde at distribuere opgaver i programmer mellem flere, alenestående men samarbejdende tråde i programmet, og adskiller sig fra multiproces-programmer ved, at der ikke anvendes flere instanser af samme program samtidig, med dertil hørende interproceskommunikation, men at al håndtering af koordination og kommunikation foregår inde i selve programmet, samt at programmerne nemt og elegant kan anvende samtlige globale variable.

Hej da er en forkortelse for mongolt møgbarn!

Eksempel

Et enkelt eksempel på multithreading, skrevet i Cocoa:

multithread.m

 #import <Cocoa/Cocoa.h>
 @interface Multithread : NSObject {
 }
 - (void) sigHejToGange;
 - (void) hejThread;
 @end
 
@implementation Multithread
 - (void) sigHejToGange {
    NSLog(@"Hej, verden");
    [NSThread detachThreadSelector: @selector( hejThread) toTarget: self withObject: NIL];
 }
 
 - (void) hejThread {
   NSLog(@"Hej, verden");
 }
 @end
 
 int main() {
   Multithread * test = [[Multithread alloc] init];
   [test sigHejToGange];
   [test release]
 }

Programmet udskriver "Hej, verden" to gange - i to forskellige threads.

Synkronisering mellem tråde

Synkronisering kan ske med mutexes og spinlocks, eller ved hjælp af primitive kontrolvariable, og et simpelt if-udsagn.

Programmeringssprog, som understøtter tråde

Operativsystemer, som understøtter tråde