Multithreading: Forskelle mellem versioner
MahdiBot (diskussion | bidrag) m r2.7.1) (Robot ændrer fa:چندریسمانی |
Addbot (diskussion | bidrag) m Bot: Migrerer 15 interwikilinks, som nu leveres af Wikidata på d: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
- 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