Multithreading: Forskelle mellem versioner
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
- C (gennem bl.a. POSIX)
- C++ som C.
- Objective-C (POSIX, Cocoa)
- Ruby, indbygget
- Perl, indbygget
- Python, indbygget
- Java, indbygget
- Delphi/Object Pascal, via OOP