Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Tråde og synkronisering. Tråde To typer tråde Dedikerede tråde -programmør opretter og tilknytter metode -”kører tråd-metoden (job) én gang” Tråd pulje.

Lignende præsentationer


Præsentationer af emnet: "Tråde og synkronisering. Tråde To typer tråde Dedikerede tråde -programmør opretter og tilknytter metode -”kører tråd-metoden (job) én gang” Tråd pulje."— Præsentationens transcript:

1 Tråde og synkronisering

2 Tråde To typer tråde Dedikerede tråde -programmør opretter og tilknytter metode -”kører tråd-metoden (job) én gang” Tråd pulje (worker-threads) -Trådmetoder (job) pladseres i en kø, hvorfra trådpuljen udvælger og afvikler -Tråde i puljen stopper ikke (suspendes blot hvis ikke noget arbejde)

3 Tråde Oprettelse af dedikeret tråd: Tråd objekt med tilknyttet delegat 2 muligheder for delegat -void metode uden parameter -void metode med et objekt som parameter Delegat angives som parameter ved oprettelsen af tråd- objekt Evt. parameter (1 objekt) angives i trådens startmetode

4 Tråde Oprettelse og start af tråd uden parameter: using System.Threading; … Thread tråd = new Thread(new ThreadStart(TrådMetode)); eller blot = new Thread(TrådMetode); tråd.Start(); … void TrådMetode() { …

5 Tråde Oprettelse og start af tråd med parameter: using System.Threading; … Thread tråd = new Thread(new ParameterizedThreadStart (TrådMetode)); eller blot = new Thread(TrådMetode); tråd.Start( 10 ); … void TrådMetode(object startparameter) { int tal = (int) startparameter; …

6 Tråde Start af tråd-metode i trådpulje: Parameter kan udelades i start og vil så være null i metoden using System.Threading; … ThreadPool.QueueUserWorkItem(new WaitCallback(TrådPoolMetode),10); eller blot ThreadPool.QueueUserWorkItem(TrådPoolMetode,10); … void TrådMetode(object state) { int tal = (int) state; …

7 Tråde Væsentlige Properties og metoder Thread klassen: Sleep(..) CurrentThread Tråd objekt: Join() IsAlive Priority IsThreadPoolThread Interrupt()(afbryder wait sleep join) IsBackground(set og get)

8 Tråde Timer – speciel tråd med ekstra parametre for enkelt eller repeterende ticks (bemærk ingen start-metode). using System.Threading; … Timer timer = new Timer(new TimerCallback (TimerMetode),…….); eller blot = new Timer(TimerMetode,……); … void TimerMetode(object state) { …

9 Synkronisering Fere mulige mekanismer: Monitor lock (excetionsafe Monitor wrapper) Interlocked (tælle semaphore) ReaderWriterLock (reader/writer problem – med kaskadekald) Mutex (binær kerne-semafor – deles af processer) Semaphore (givet antal adgange til ressource)

10 Synkronisering Monitor med metoderne: Enter (lock-object)- blocking lock Exit (lock-object)- release Wait (lock-object)- release and wait Pulse (lock-object)- notify PulseAll (lock-object)- notifyall TryEnter (lock-object)- nonblocking lock

11 Synkronisering lock (lock-object) – exception safe Monitor wrapper Svarer til: Monitor.Enter(lock-object); try { …. } finally { Monitor.Exit(lock-object); }

12 Synkronisering ReaderWriterLock (spec. semafor for nem løsning af reader-writer problemet) Vigtige metoder: AcquireReaderLock (lock-object) ReleaseReaderLock (lock-object) AcquireWriterLock (lock-object) (pas på deadlock hvis allerede readerlock) ReleaseWriterLock (lock-object) UpgradeToWriterLock (lock-object) DowngradeFromWriterLock (lock-object)

13 Synkronisering Der er lavet synkroniserede wrapper klasser for flere colletionklasser. Eks. for ArrayList ArrayList list = new ArrayList(); ArrayList safelist = ArrayList.Synchronized(list);


Download ppt "Tråde og synkronisering. Tråde To typer tråde Dedikerede tråde -programmør opretter og tilknytter metode -”kører tråd-metoden (job) én gang” Tråd pulje."

Lignende præsentationer


Annoncer fra Google