Common Language Runtime. Multithreading



Relaterede dokumenter
Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Singleton pattern i Java

Planen for idag. Synkroniseringsmekanismer. Krav til løsning. Kritiske regioner. Bagerens algoritme. Kritisk region via delt lager.

A Profile for Safety Critical Java

Dag 10 Flertrådet programmering

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

Singleton pattern i C#

Løsning af møntproblemet

dmasark Aflevering - Uge 50

Real-time programming safety in Java and Ada

ATTRIBUTES MULTITHREADING DYNAMIC PROGRAMMING. Grundlæggende programmering Lektion 11

.NET 4.0 og C# 4.0. Denne artikel beskriver nogle af de nye features i.net 4.0 og C# 4.0. Den forudsætter et vist kendskab til.net og C#.

Test af It-komponent

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Koordinering. dopsys

Mandatory Assignment 1

.NET 4.5 og C# 5.0. Denne artikel beskriver nogle af de nye features i.net 4.5 og C# 5.0. Den forudsætter et vist kendskab til.net og C#.

Abstrakte datatyper C#-version

Principper for Samtidighed og Styresystemer

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Hvilket sprog er hurtigst

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

Debugging ivs. Praksis eksempel. Assemblies Attributes Dynamic programming. Github. Multithreading. Grundlæggende programmering Lektion 6

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Hvordan vælger jeg dokumentprofilen?

Parallelle algoritmer

Tredjepart webservices

Hvad er Objekter - Programmering

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Datatekniker med programmering som speciale

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank

Modern Concurrency Abstractions for C#

Den Danske Esri Brugerkonference 2019 What's new in ArcGIS Enterprise og Administration af ArcGIS Enterprise

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Dvs. at give dit program muligheden for at loade og bruge plugins som andre har lavet.

DATALOGI 1F. Skriftlig eksamen tirsdag den 10. juni % 2 10 % 3 25 % 4 10 % 5 30 %

Dag 10 Flertrådet programmering

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Introduktion til AOP i C#

Anvendelse af metoder - Programmering

Deadlocks dopsys 1 onsdag den 8. december 2010

Nye features i Java 1.5/5.0

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester

Udvikling af DOTNET applikationer til MicroStation i C#

CodeDOM - Dynamisk generering og kompilering af kode

Introduktion til NAnt

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Database programmerings tips

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

OOP e uge kursusgang: Samtidighed (II) Safety = sikkerhed. Safety

Computer netværk og TCP/IP protokoller. dcomnet 1

Skriftlig eksamen i Datalogi

Spar tid med struktureret programmering! Om PLC programmering

Klasser og objekter. (Afsnit i manualen)

Plugin-arkitektur med.net

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

Eksempel: et ordresystem note 5 Lagdeling s. 1

SWC eksamens-spørgsmål. Oversigt

Kapitel 1 I gang med C#

Computer netværk og TCP/IP protokoller. dcomnet 1

Google App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Virkefeltsregler i Java

3C03 Concurrency: Model-based Design

Processer og koordinering. dopsys 1

DM507 Algoritmer og datastrukturer

Distribuerte Objekter. Våren 2010 Professor II Eric Jul F

Blockprog Rev1.0. Block programmering CS1/CJ1. Qiuck guide OMRON

CLR Integration. Af Torsten Holtse, pbs Indhold

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag

DRONNINGER (QUEENS) Opgave 1

IT-Basecamp Real World Java EE Patterns Adam Bien. Real World Java EE Patterns, Adam Bien Copyright Lund&Bendsen A/S

Kursus navn: Indledende programmering Kursus nr

Processer og tråde. dopsys 1

Register-databasen med.net

Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.

Sesam Automationstrend. Spørgsmål til leverandørerne? New Automation Technology

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Concurrency-mønstre i indlejrede systemer Temadag om Embeddede systemer Teknologisk Institut, 6. december 2004

Find største element, sæt det på sidste plads. Grundidé i hobsortering. er er

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

Fra idé til virkelig med Azure Mobile Services

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

Videregående programmering i Java

Assignment #5 Toolbox Contract

Tree klassen fra sidste forelæsning

educasoft - en professionel samarbejdspartner med speciale i uddannelse!

OIOSAML.NET og Umbraco. ved Thomas Ravnholt silverbullet.dk

Implementation af Koordinering. dopsys 1

Transkript:

Common Language Runtime Multithreading

Multithreading i.net Dedicated threads Programmøren kontrollerer starttidspunkt, levetid m.m. for den enkelte thread. Pooled threads Threads lånes fra en pulje af threads (Thread Pool). Side 2 Elsam Engineering 08-03-2005

Dedicated Threads System.Threading.Thread Use cases Prioritering af threads Holde processen i live (IsBackground=false) Tidskrævende/blokerende operationer Side 3 Elsam Engineering 08-03-2005

Side 4 Elsam Engineering 08-03-2005

Stopping Threads Eksekvering stopper når target metode returnerer Via normal program flow eller exception Brugerdefineret terminering skal implementeres Worker thread monitorerer et flag Controlling thread sætter flaget når terminering skal påbegyndes Controlling thread venter på at terminering er afsluttet Side 5 Elsam Engineering 08-03-2005

Side 6 Elsam Engineering 08-03-2005

Pooled Threads Mange samtidige threads påvirker performance (scalability) F.eks.: Server opretter ny thread til håndtering af hver request F.eks.: GUI der tillader, at vilkårligt mange baggrundsprocesser startes Dyrt at oprette og starte threads Der bruges mere tid på thread administration end på at udføre arbejde. Side 7 Elsam Engineering 08-03-2005

Thread Pool Model Threads lånes fra en pool af præ-eksisterende threads. Pool initialiseres med et lille antal threads Arbejde der ønskes udført af en pool thread sættes i kø Når en pool thread er ledig tildeles den arbejde fra køen (såfremt køen ikke er tom) Thread Pool en håndterer oprettelse og nedlæggelse af threads på basis af workload Side 8 Elsam Engineering 08-03-2005

Thread Pool Model En (built-in) thread pool pr. proces Arbejde der er sat i kø kan ikke fjernes Threads kan ikke prioriteres i forhold til hinanden En pool thread vil ikke holde processen kørende (IsBackground = true) Indsættelse af arbejde i Thread Pool køen sker via Delegates Delegate.BeginInvoke( ) Delegate.EndInvoke( ) Side 9 Elsam Engineering 08-03-2005

delegate void RunDelegate(int threadno); static void Main(string[] args) { for (int i=0; i<50; i++) { RunDelegate rd = new RunDelegate(Run); rd.begininvoke(i, new AsyncCallback(RunComplete), i); } Console.WriteLine("50 threads queued!"); Console.ReadLine(); } public static void Run(int threadno) { Console.WriteLine("Hello from thread " + threadno); Thread.Sleep(15000); } public static void RunComplete(IAsyncResult iar) { AsyncResult ar = (AsyncResult)iar; RunDelegate rd = (RunDelegate)ar.AsyncDelegate; rd.endinvoke(iar); } Console.WriteLine("Goodbye from thread " + (int)iar.asyncstate); Side 10 Elsam Engineering 08-03-2005

Thread Pool Model Forskellige muligheder for at høste resultatet når en thread er termineret Callback (AsyncCallback argument til BeginInvoke) Poll (IAsyncResult.IsCompleted) Call EndInvoke (blokerer indtil thread metoden terminerer) Uanset hvad skal EndInvoke altid kaldes Side 11 Elsam Engineering 08-03-2005

Data tilgang i en multithreaded verden Hvis data kun læses ingen problemer!! Hvis data også opdateres problemer!! Hvis man er heldig crasher applikationen Hvis man er uheldig har man data korruption uden at crashe Hvis man er rigtig uheldig virker applikationen indtil man har sendt den på markedet! Løsning: lås på data så de kun kan tilgåes fra én thread ad gangen Side 12 Elsam Engineering 08-03-2005

Monitor Den primære thread synkroniseringsmekanisme i.net Låsning af data Monitor.Enter() Frigivning af data Monitor.Exit() C# har exception-safe wrapper (lock) Side 13 Elsam Engineering 08-03-2005

Side 14 Elsam Engineering 08-03-2005

Side 15 Elsam Engineering 08-03-2005

Andre synkroniseringsmekanismer Monitor TryEnter allows for time-limited waits ReaderWriterLock multi-reader/single-writer Mutex CLR wrapper around Win32 kernel object Semaphore - CLR wrapper around Win32 kernel object (.NET 2.0 only) Side 16 Elsam Engineering 08-03-2005

Common Language Runtime Multithreading i WinForms

Multithreading i WinForms Baseret på Win32 message loop En control kan kun tilgåes fra den thread der oprettede den Forsøg på at tilgå en control fra en anden thread vil måske forårsage en exception Tilgang fra anden thread skal foregå via ISynchronizeInvoke bool InvokeRequired Invoke( ) Side 18 Elsam Engineering 08-03-2005

Eksempel: Multithreading i WinForms Side 19 Elsam Engineering 08-03-2005

Side 20 Elsam Engineering 08-03-2005

Side 21 Elsam Engineering 08-03-2005

Side 22 Elsam Engineering 08-03-2005

Side 23 Elsam Engineering 08-03-2005

Side 24 Elsam Engineering 08-03-2005

Side 25 Elsam Engineering 08-03-2005