Liggewigproses
'n Liggewigproses (Engels: lightweight thread) in rekenaarwetenskap is 'n metode om 'n rekenaarprogram in een of meer samelopende take op te deel (sien ook: vurk). Liggewigprosesse en prosesse verskil van een bedryfstelsel tot die volgende, maar oor die algemeen word 'n liggewigproses in 'n gewone proses omvat. Liggewigprosesse wat aan 'n proses behoort deel hulpbronne waar gewone prosesse nie tipies hulpbronne deel nie.
Op 'n enkele verwerker geskied samelopendheid d.m.v. tydsverdeling multipleksering wat soortgelyk is aan die samelopende uitvoering van veelvuldige take (rekenaar samelopendheid): die sentrale verwerker wissel uitvoering opeenvolgend van een liggewigproses tot die volgende. Die kontekswisseling kan vinnig genoeg geskied om 'n illusie van samelopendheid te skep. Op 'n multiverwerker- of multikernstelsel kan samelopendheid van liggewigprosesse d.m.v. multiverwerking geskied, sodat onderskeie liggewigprosesse en gewone prosesse gelyktydig op verskillende verwerkers of kerns kan uitvoer.
Baie moderne bedryfstelsels ondersteun beide die tydverdeelde en multiverwerker uitvoer van liggewigprosesse d.m.v. 'n prosesskeduleerder. Die bedryfstelsel kern laat programmeerders toe om liggewigprosesse te manipuleer d.m.v. die sisteemroepkoppelvlak.
In die afwesigheid van sulke ondersteuning kan programme steeds liggewigprosesse implementeer d.m.v. tydskakelaars, seine of ander wyses wat hul eie uitvoer onderbreek en dus 'n vorm van tydsverdeling toelaat. Hierdie metodes word soms "user-space threads" in Engels genoem.
Liggewigprosesse teenoor prosesse
[wysig | wysig bron]'n Liggewigproses word onderskei van 'n tradisionele samelopende proses deur dat prosesse:
- tipies onafhanklik is,
- aansienlike toestandsinliging bevat,
- onderskeie adresruimtes het,
- slegs d.m.v. interproseskommunikasiemeganismes wat deur bedryfstelsel verskaf is, kommunikeer.
Veelvuldige liggewigprosesse daarenteen deel gewoonlik die toestand, geheue en ander hulpbronne van 'n proses. Kontekswisseling tussen liggewigprosesse in dieselfde proses is gewoonlik vinniger as kontekswisseling tussen prosesse.
Verwysings
[wysig | wysig bron]- David R. Butenhof: Programming with POSIX Threads, Addison-Wesley, ISBN 0-201-63392-2
- Bradford Nichols, Dick Buttlar, Jacqueline Proulx Farell: Pthreads Programming, O'Reilly & Associates, ISBN 1-56592-115-1
- Charles J. Northrup: Programming with UNIX Threads, John Wiley & Sons, ISBN 0-471-13751-0
- Mark Walmsley: Multi-Threaded Programming in C++, Springer, ISBN 1-85233-146-1
- Paul Hyde: Java Thread Programming, Sams, ISBN 0-672-31585-8
- Bill Lewis: Threads Primer: A Guide to Multithreaded Programming, Prentice Hall, ISBN 0-13-443698-9
- Steve Kleiman, Devang Shah, Bart Smaalders: Programming With Threads, SunSoft Press, ISBN 0-13-172389-8
- Pat Villani: Advanced WIN32 Programming: Files, Threads, and Process Synchronization, Harpercollins Publishers, ISBN 0-87930-563-0
- Jim Beveridge, Robert Wiener: Multithreading Applications in Win32, Addison-Wesley, ISBN 0-201-44234-5
- Thuan Q. Pham, Pankaj K. Garg: Multithreaded Programming with Windows NT, Prentice Hall, ISBN 0-13-120643-5
- Len Dorfman, Marc J. Neuberger: Effective Multithreading in OS/2, McGraw-Hill Osborne Media, ISBN 0-07-017841-0
- Alan Burns, Andy Wellings: Concurrency in ADA, Cambridge University Press, ISBN 0-521-62911-X
- Uresh Vahalia: Unix Internals: the New Frontiers, Prentice Hall, ISBN 0-13-101908-2
- Alan L. Dennis: .Net Multithreading , Manning Publications Company, ISBN 1-930110-54-5
- Tobin Titus, Fabio Claudio Ferracchiati, Srinivasa Sivakumar, Tejaswi Redkar, Sandra Gopikrishna: C# Threading Handbook, Peer Information Inc, ISBN 1-86100-829-5
- Tobin Titus, Fabio Claudio Ferracchiati, Srinivasa Sivakumar, Tejaswi Redkar, Sandra Gopikrishna: Visual Basic .Net Threading Handbook, Wrox Press Inc, ISBN 1-86100-713-2
Eksterne skakels (almal in Engels)
[wysig | wysig bron]- Artikel "Query by Slice, Parallel Execute, and Join: A Thread Pool Pattern in Java Geargiveer 7 Februarie 2008 op Wayback Machine" deur Binildas C. A.
- Ars Technica artikel oor samelopendheid
- Antwoorde op gereeld gevraagde vrae vir comp.programming.threads
- Die C10K probleem
- Artikel "The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software" deur Herb Sutter
- Artikel "The Problem with Threads Geargiveer 13 Februarie 2009 op Wayback Machine" deur Edward Lee
- Artikel "When is Multi-Threading a bad idea? Geargiveer 22 Oktober 2008 op Wayback Machine" deur Chris Reath
- POSIX threads explained deur Daniel Robbins
- Multithreading in the Solaris Operating Environment Geargiveer 27 Maart 2009 op Wayback Machine