Multithreading

From Wikipedia, the free encyclopedia

Remove ads

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.

Remove ads

Anvendelse af multithreading

Da tråde elegant kan distribueres over flere processorer, kan maksimal ydeevne for multiprocessor-systemer nåes ved enkel og effektiv anvendelse af multithreading, uden det store overhead multiproces-programmer skaber hos operativsystemet.

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

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads