Multithreading: Forskelle mellem versioner

Fra Wikipedia, den frie encyklopædi
Content deleted Content added
m r2.7.1) (Robot ændrer fa:چندریسمانی
Addbot (diskussion | bidrag)
m Bot: Migrerer 15 interwikilinks, som nu leveres af Wikidatad:q1064412
Linje 57: Linje 57:
[[Kategori:Datalogi]]
[[Kategori:Datalogi]]
[[Kategori:Programmeringssprog]]
[[Kategori:Programmeringssprog]]

[[de:Hardwareseitiges Multithreading]]
[[en:Multithreading (computer architecture)]]
[[es:Multihilo]]
[[fa:چندریسمانی]]
[[fr:Multithreading]]
[[it:Multithreading]]
[[ja:ハードウェアマルチスレッディング]]
[[kk:Көп ағындылы]]
[[ko:멀티스레딩]]
[[pl:Wielowątkowość]]
[[ru:Многопоточность]]
[[simple:Multithreading]]
[[tr:Çoklu kullanım]]
[[uk:Багатонитевість]]
[[zh:多线程]]

Versionen fra 9. mar. 2013, 01:51

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.

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