. .NET-framework is een runtime-classbibliotheek voor C#, . .NET is een multithreaded omgeving. Een thread is een enkel sequentiële controleproces in een proces. Een thread is een entiteit in een proces. Een proces kan meerdere threads hebben, en een thread moet een ouderproces hebben.
Threads hebben over het algemeen drie basistoestanden: lezen, blokkeren en operation. Uit de drie basistoestanden worden vijf basisbewerkingen van draden afgeleid. Ten eerste, afgeleid, draden worden afgeleid binnen een proces. Ten tweede, plan een gereed-thread om de operationele status in te voeren. Ten derde, blokkeren, als een thread moet wachten tot een gebeurtenis plaatsvindt tijdens de uitvoering, wordt deze geblokkeerd. Ten vierde, deblokkeren; als het evenement begint, wordt de thread gedeblokkeerd en komt in de ready-wachtrij. Ten vijfde, finish, de thread eindigt, en worden de registercontext en stack-inhoud die het uitvoert vrijgegeven.
Een nieuwe thread is een nieuw gegenereerd thread-object dat nog geen middelen heeft toegewezen. Daarom kun je alleen de start() of sluit()-methode gebruiken.
De runable state is wanneer de thread de benodigde resources voor de thread krijgt nadat de start()-methode is uitgevoerd en de run()-methode aanroept om uit te voeren.
De Not Runable-toestand is een toestand die binnenkomt wanneer de volgende gebeurtenissen plaatsvinden, de suspend()-methode wordt aangeroepen, de sleep()-methode wordt aangeroepen, de thread wait() gebruikt om te wachten op de conditievariabele, en de thread wacht op I/O.
Dood is wanneer de Run()-methode terugkeert, of wanneer een andere thread de stop()-methode aanroept, en de thread in de dode toestand gaat. Hieronder staan twee eenvoudige voorbeelden van Thread.
Samenvatting: Waarom Thread (multithreading) gebruiken, dit is om te voorkomen dat de hoofdthread wordt geblokkeerd; als je een grote hoeveelheid data moet verwerken of een tijdrovende methode moet aanroepen, moeten we Thread multithreading gebruiken.
Voorbeeld:
Geen multithreading gebruiken: De interface reageert niet... Dat komt omdat multithreading niet wordt gebruikt
|