Multithreading: Forskelle mellem versioner
Isfisk (diskussion | bidrag) wiki |
+ de |
||
Linje 40: | Linje 40: | ||
[[C (programmeringssprog)|C]] (gennem bl.a. [[POSIX]]) |
[[C (programmeringssprog)|C]] (gennem bl.a. [[POSIX]]) |
||
[[C plus plus (programmeringssprog)|C++]] |
[[C plus plus (programmeringssprog)|C++]] som C. |
||
[[Objective-C]] (POSIX, [[Cocoa]]) |
[[Objective-C]] (POSIX, [[Cocoa]]) |
||
Linje 57: | Linje 57: | ||
[[Microsoft]] [[Windows 95]], [[Windows 98]], [[Windows NT]], [[Windows 2000]], [[Windows XP]], [[Windows 2003]] |
[[Microsoft]] [[Windows 95]], [[Windows 98]], [[Windows NT]], [[Windows 2000]], [[Windows XP]], [[Windows 2003]] |
||
[[Open source]]: [[Linux]], [[FreeBSD]], [[NetBSD]], [[OpenBSD]] |
[[Open source]]: [[Linux]], [[FreeBSD]], [[NetBSD]], [[OpenBSD]] og andre |
||
[[Sun Microsystems]]: [[Solaris]] |
[[Sun Microsystems]]: [[Solaris]] |
||
Linje 63: | Linje 63: | ||
[[Kategori: Datalogi]] |
[[Kategori: Datalogi]] |
||
[[Kategori: Programmeringssprog]] |
[[Kategori: Programmeringssprog]] |
||
[[de:Multithreading]] |
Versionen fra 20. maj 2005, 17:54
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
C++ som C.
Objective-C (POSIX, Cocoa)
Ruby, indbygget
Perl, indbygget
Python, indbygget
Java, indbygget
Operativsystemer, som understøtter tråde
Microsoft Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows 2003
Open source: Linux, FreeBSD, NetBSD, OpenBSD og andre