Workshop : “Tecniche per il multhreading”

Durata: 1 giorni | Prezzo: 59 €
Data Roma: 29-11-2016 | Orari: 10:00 – 13:00 e 14:00 – 17:30 (Pranzo Incluso)

Prerequisiti:

Delphi, OOP

Descrizione:

L’utilizzo del multithreading nella applicazioni desktop, server o mobile non è più opzionale. Con i moderni microprocessori multi-core il vantaggio di avere path di esecuzioni paralleli può fare la differenza tra un’applicazione efficiente e di successo, e un’applicazione lenta che nessuno vuole usare mentre per quanto riguarda i server di rete, serializzare le richieste dei client è semplicemente inaccettabile.
Il multithreading è diventato una necessità imprescindibile.
In questo workshop affronteremo molte delle problematiche relative allo sviluppo multithreading e le migliori tecniche per risolvere in maniera efficace ed efficiente. L’approccio teorico/pratico permette ai discenti di padroneggiare subito i concetti fondamentali in modo da metterli in pratica fin da subito.

Contenuti:

  • Cosa sono i thread e perché e quando è necessario usarli
  • Le conseguenze dell’utilizzo del multithreading e il problema delle risorse condivise
  • La classe TThread
  • Sincronizzare un thread in background con il main thread
    • Synchronize, TThread.Synchronize, Thread.Queue
  • Come distruggere correttamente un thread
  • Quando una funzione è thread-safe e quando non lo è
  • Le tecniche di sincronizzazione basilari
    • Critical section – TCriticalSection
    • Interlocked function – TInterlocked
    • Monitor – TMonitor
    • Mutex – TMutex
    • Eventi – TEvent
  • Passare parametri ad un thread alla creazione
  • Passare parametri ad un thread durente il funzionamento
  • Come rendere thread safe una struttura dati che non lo è
  • Il pattern producer – consumer
  • Attenti al deadlock!
  • Come e quando usare threadvar
  • Liste thread safe nella RTL: TThreadedQueue<T>, TThreadList<T>
  • Estendere il producer – consumer: multi-producer — multi-consumer
  • Applicazioni pratiche del multithreading
    • Query in background
    • Query parallele
    • Richieste HTTP in background
    • Analisi e report in background
  • La parallel programming library: TTask, TFuture e TParallel.&For
  • TSemaphore e la gestione della concorrenza
  • La classe TMultiReadExclusiveWriteSynchronizer