Coarse-Grained Synchronization

Size: px
Start display at page:

Download "Coarse-Grained Synchronization"

Transcription

1 Coarse-Grained Synchronization Ogni metodo opera mediante un lock sull oggetto Code di attesa per operare sull oggetto Nozione di correttezza (linearizability) Modello astratto basato sulla nozione di storia Tecniche statiche (+ model checking) E fatta? 1 Coarse-Grained Synchronization Operare con thread Non aumenta necessariamente l efficienza complessiva di un sistema Attese attive, overhead di gestione, runtime complicato, Multiprocessori? Alcune app sono inerentemente parallele map&reduce come usato da Google 2 1

2 Fine-Grained Synchronization Non utilizziamo un lock globale Strutturiamo l oggetto in un insieme di lock Independently-synchronized components Metodi sono in conflitto quando cercano di accedere Medesima componente contemoraneamente Optimistic Synchronization Si cerca la componente richiesta senza usare lock Una volta trovata OK: e fatta Oops: riprova Valutazione Semplice Errori di programmazione sono costosi 2

3 Metodi add(x) remove(x) contains(x) Interface: Set List-Based Sets public interface Set<T> { public boolean add(t x); public boolean remove(t x); public boolean contains(t x); 3

4 public class Node { public T item; public int key; public Node next; List Node public class Node { public T item; public int key; public Node next; List Node item of interest 4

5 public class Node { public T item; public int key; public Node next; List Node Usually hash code public class Node { public T item; public int key; public Node next; List Node Reference to next node 5

6 List-Based Set - a b c + Ordinata con sentinelle (chiavi min & max) Preservato da add() Invariante remove() contains() Solita induzione sulla struttura 6

7 Rep: Funzione di astrazione a b Astrattamente: {a, b Rep Invariant Rep invariant Definisce quali sono le rappresentazioni legali valide Preservato dai metodi Dipende dai metodi 7

8 Sentinelle Ordinamento Nessun duplicato Rep Invariant S(head) = Abstraction Map { x esiste a tale che a raggoungibile da head e a.item = x 8

9 List Based Set Add(b) a c d Remove(b) a b c List Based Set Add(b) a c d Remove(b) b a b c 9

10 Coarse-Grained Locking a b d Coarse-Grained Locking a b d c 10

11 Coarse-Grained Locking a b d c Semplice e costoso Coarse-Grained Locking Metodi sincronizzati (a la Java) Solo un metodo ha l accesso Corretto Thread multipli Code di attesa Overhead 22 11

12 Fine-grained Locking Pensare prima di programmare Suddividere l oggetto in parti Ogni parte dell oggetto ha un suo lock Metodi che operano su parti disgiunte possono operare senza problema di sincronizzazione 23 a b c 12

13 a b c a b c 13

14 a b c a b c 14

15 Remove a b c d remove(b) Remove a b c d remove(b) 15

16 Remove a b c d remove(b) Remove a b c d remove(b) 32 16

17 Remove a b c d remove(b) Remove a c d remove(b) Problema 2 lock? 17

18 Concurrent Remove a b c d remove(b) remove(c) Concurrent Remove a b c d remove(b) remove(c) 18

19 Concurrent Remove a b c d remove(b) remove(c) Concurrent Remove a b c d remove(b) remove(c) 19

20 Concurrent Remove a b c d remove(b) remove(c) Concurrent Remove a b c d remove(b) remove(c) 20

21 Concurrent Remove a b c d remove(b) remove(c) Concurrent Remove a b c d remove(b) remove(c) 21

22 Concurrent Remove a b c d remove(b) remove(c) Art of Multiprocessor Programming 43 Concurrent Remove a b c d remove(b) remove(c) 44 22

23 a c d remove(b) remove(c) c non viene rimosso a c d remove(b) remove(c) 23

24 Quale e il problema? Rimuovere c Operare sul campo next di b a b c a b c Cerchiamo di capire il problema Se un nodo e lock Nessuno puo cancellare il nodo successore Morale: il thread deve fare il lock Sul nodo da cancellare E sul predecessore 24

25 a b c d remove(b) a b c d remove(b) 25

26 a b c d remove(b) a b c d remove(b) trovato 26

27 a b c d remove(b) trovat o a c d remove(b) 27

28 a b c d remove(b) remove(c) a b c d remove(b) remove(c) 28

29 a b c d remove(b) remove(c) a b c d remove(b) remove(c) 29

30 a b c d remove(b) remove(c) a b c d remove(b) remove(c) 30

31 a b c d remove(b) remove(c) a b c d remove(b) remove(c) 31

32 a b c d wait remove(c) a b c d remove(c) wait 32

33 a b c d Wait! remove(c) a b d Notify 33

34 a b d remove(b) a b d remove(b) 34

35 a d remove(b) a d 35

36 Remove method public boolean remove(item item) { int key = item.hashcode(); Node pred, curr; try { finally { curr.unlock(); pred.unlock(); Remove method public boolean remove(item item) { int key = item.hashcode(); Node pred, curr; try { finally { curr.unlock(); pred.unlock(); Key used to order node 36

37 Remove method public boolean remove(item item) { int key = item.hashcode(); Node pred, curr; try { finally { currnode.unlock(); prednode.unlock(); Predecessor and current nodes Remove method public boolean remove(item item) { int key = item.hashcode(); Node pred, curr; try { finally { curr.unlock(); pred.unlock(); Make sure locks released 37

38 Remove method public boolean remove(item item) { int key = item.hashcode(); Node pred, curr; try { finally { curr.unlock(); pred.unlock(); Everything else Remove method try { pred = this.head; pred.lock(); curr = pred.next; curr.lock(); finally { 38

39 Remove method lock pred == head try { pred = this.head; pred.lock(); curr = pred.next; curr.lock(); finally { Remove method try { pred = this.head; pred.lock(); curr = pred.next; curr.lock(); finally { Lock current 39

40 Remove method try { pred = this.head; pred.lock(); curr = pred.next; curr.lock(); finally { Traversing list Remove: searching while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return false; 40

41 Remove: searching while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; Search key range pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return false; Remove: searching while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return false; At start of each loop: curr and pred locked 41

42 Remove: searching while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; curr.lock(); If return item false; found, remove node Remove: searching while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return If node false; found, remove it 42

43 Remove: searching Unlock predecessor while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return false; Remove: searching Only one node locked! while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return false; 43

44 Remove: searching while (curr.key <= key) { demote current if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return false; Remove: searching while (curr.key <= key) { if Find (item and == lock curr.item) new current { pred.next = curr.next; return true; pred.unlock(); pred = currnode; curr = curr.next; curr.lock(); return false; 44

45 Remove: searching while (curr.key <= key) { Lock if (item invariant == curr.item) restored { pred.next = curr.next; return true; pred.unlock(); pred = currnode; curr = curr.next; curr.lock(); return false; Remove: searching while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; Otherwise, not present pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return false; 45

46 Why does this work? To remove node e Must lock e Must lock e s predecessor Therefore, if you lock a node It can t be removed And neither can its successor remove() e linearizable while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return false; pred raggiungibile da head curr e pred.next curr.item appartiene 46

47 while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return false; Linearization point if item is present Why remove() is linearizable while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return false; Node locked, so no other thread can remove it. 47

48 while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; Item not present curr.lock(); return false; while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; pred.unlock(); pred = curr; curr = curr.next; pred reachable from head curr.lock(); curr is pred.next pred.key < key return false; key < curr.key 48

49 while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; Linearization point pred.unlock(); pred = curr; curr = curr.next; curr.lock(); return false; Add e lock predecessor lock successor Inserzione 49

50 Tutto bene? Sicuramente meglio del lock globale Thread possono scorrere in parallelo Comportamento ideale? Catena di lock/unlock Potrebbe non essere efficiente Optimistic: scorrere senza fare Lock a b d e add(c) Aha! 50

51 Optimistic a b d e add(c) Optimistic c a b d e add(c)

52 Cosa potrebbe andare storto? a b d e add(c) Aha! Cosa potrebbe andare storto? a b d e add(c)

53 Cosa potrebbe andare storto? a b d e remove(b) 105 Cosa potrebbe andare storto? a b d e remove(b)

54 Cosa potrebbe andare storto? a b d e add(c) 107 Cosa potrebbe andare storto? c a b d e add(c)

55 Cosa potrebbe andare storto? a d e add(c) 109 a b d e add(c) b raggiungibile da head 55

56 Ancora problemi a b d e add(c) Aha! 111 Ancora problemi a b d e add(c) add(b ) 56

57 Ancora problemi a b d e add(c) b add(b ) 113 Ancora problemi a b d e add(c) b

58 Ancora problemi c a b d e add(c) 115 a b d e add(c) Verifica, b punta a d 58

59 Optimistic: Linearization Point a b d e add(c) c Validation private boolean validate(node pred, Node curry) { Node node = head; while (node.key <= pred.key) { if (node == pred) return pred.next == curr; node = node.next; return false; 59

60 Validation private boolean validate(node pred, Node curr) { Node node = head; while (node.key <= pred.key) { if (node == pred) return pred.next == curr; node = node.next; Predecessor & return false; current nodes private boolean validate(node pred, Node curr) { Node node = head; while (node.key <= pred.key) { if (node == pred) return pred.next == curr; node = node.next; return false; Validation Begin at the beginning 60

61 Validation private boolean validate(node pred, Node curr) { Node node = head; while (node.key <= pred.key) { if (node == pred) return pred.next == curr; node = node.next; return false; Search range of keys Validation private boolean validate(node pred, Node curr) { Node node = head; while (node.key <= pred.key) { if (node == pred) return pred.next == curr; node = node.next; return false; Predecessor reachable 61

62 Validation private boolean validate(node pred, Node curr) { Node node = head; while (node.key <= pred.key) { if (node == pred) return pred.next == curr; node = node.next; return false; Is current node next? Validation private boolean Otherwise move on validate(node pred, Node curr) { Node node = head; while (node.key <= pred.key) { if (node == pred) return pred.next == curr; node = node.next; return false; 62

63 Validation private boolean Predecessor not reachable validate(node pred, Node curr) { Node node = head; while (node.key <= pred.key) { if (node == pred) return pred.next == curr; node = node.next; return false; Remove: searching public boolean remove(item item) { int key = item.hashcode(); retry: while (true) { Node pred = this.head; Node curr = pred.next; while (curr.key <= key) { if (item == curr.item) break; pred = curr; curr = curr.next; 63

64 Remove: searching public boolean remove(item item) { int key = item.hashcode(); retry: while (true) { Node pred = this.head; Node curr = pred.next; while (curr.key <= key) { if (item == curr.item) break; pred = curr; curr = curr.next; Search key Remove: searching public boolean remove(item item) { int key = item.hashcode(); retry: while (true) { Node pred = this.head; Node curr = pred.next; while (curr.key <= key) { if (item == curr.item) break; pred = curr; curr = curr.next; Retry on synchronization conflict 64

65 Remove: searching public boolean remove(item item) { int key = item.hashcode(); retry: while (true) { Node pred = this.head; Node curr = pred.next; while (curr.key <= key) { if (item == curr.item) break; pred = curr; curr = curr.next; Examine predecessor and current nodes Remove: searching public boolean remove(item item) { int key = item.hashcode(); retry: while (true) { Node pred = this.head; Node curr = pred.next; while (curr.key <= key) { if (item == curr.item) break; pred = curr; curr = curr.next; Search by key 65

66 Remove: searching public boolean remove(item item) { int key = item.hashcode(); retry: while (true) { Node pred = this.head; Node curr = pred.next; while (curr.key <= key) { if (item == curr.item) break; pred = curr; curr = curr.next; Stop if we find item Remove: searching public boolean remove(item item) { int key Move = item.hashcode(); along retry: while (true) { Node pred = this.head; Node curr = pred.next; while (curr.key <= key) { if (item == curr.item) break; pred = curr; curr = curr.next; 66

67 Remove Method try { pred.lock(); curr.lock(); if (validate(pred,curr) { if (curr.item == item) { pred.next = curr.next; return true; else { return false; finally { pred.unlock(); curr.unlock(); Remove Method try { pred.lock(); curr.lock(); if (validate(pred,curr) { if (curr.item == item) { pred.next = curr.next; return true; else { return false; Always unlock finally { pred.unlock(); curr.unlock(); 67

68 Remove Method try { pred.lock(); curr.lock(); if (validate(pred,curr) { if (curr.item == item) { pred.next = curr.next; return true; else { return false; finally { Lock both nodes pred.unlock(); curr.unlock(); Remove Method try { pred.lock(); curr.lock(); if (validate(pred,curr) { if (curr.item == item) { pred.next = curr.next; return true; else { Check for synchronization return false; conflicts finally { pred.unlock(); curr.unlock(); 68

69 Remove Method try { pred.lock(); curr.lock(); if (validate(pred,curr) { if (curr.item == item) { pred.next = curr.next; return true; else { return false; finally { pred.unlock(); curr.unlock(); target found, remove node Remove Method try { pred.lock(); curr.lock(); if (validate(pred,curr) { if (curr.item == item) { pred.next = curr.next; return true; target not found else { return false; finally { pred.unlock(); curr.unlock(); 69

70 Valutazione Buona gestione dei lock Performance Concurrency Problemi Scorrere la lista due volte contains() comunque richiede lock remove() Scan list Lazy List Lock predecessor & current Logical delete Marcare il nodo come eliminato (!!!!) Physical delete Ridirezionare i puntatori 70

71 Lazy Removal a b c d Lazy Removal a b c d Present in list 71

72 Lazy Removal a b c d Logically deleted 143 Lazy Removal a b c d Physically deleted 72

73 Lazy Removal a b d Physically deleted a b c 73

74 a b c a b c 74

75 a b c remove(b) a b c a not marked 75

76 a b c a still points to b a b c Logical delete 76

77 a b c physical delete a b c 77

78 S(head) = Abstraction Map { x esiste a tale che a raggiungibile da head e a.item = x e aunmarked Invariant If not marked then item in the set and reachable from head and if not yet traversed it is reachable from pred 78

79 Validation private boolean validate(node pred, Node curr) { return!pred.marked &&!curr.marked && pred.next == curr); List Validate Method private boolean validate(node pred, Node curr) { return!pred.marked &&!curr.marked && pred.next == curr); Predecessor not Logically removed 79

80 List Validate Method private boolean validate(node pred, Node curr) { return!pred.marked &&!curr.marked && pred.next == curr); Current not Logically removed List Validate Method private boolean validate(node pred, Node curr) { return!pred.marked &&!curr.marked && pred.next == curr); Predecessor still Points to current 80

81 Remove try { pred.lock(); curr.lock(); if (validate(pred,curr) { if (curr.key == key) { curr.marked = true; pred.next = curr.next; return true; else { return false; finally { pred.unlock(); curr.unlock(); Remove try { pred.lock(); curr.lock(); if (validate(pred,curr) { if (curr.key == key) { curr.marked = true; pred.next = curr.next; return true; else { Validate as before return false; finally { pred.unlock(); curr.unlock(); 81

82 Remove try { pred.lock(); curr.lock(); if (validate(pred,curr) { if (curr.key == key) { curr.marked = true; pred.next = curr.next; return true; else { return false; finally { Key found pred.unlock(); curr.unlock(); Remove try { pred.lock(); curr.lock(); if (validate(pred,curr) { if (curr.key == key) { curr.marked = true; pred.next = curr.next; return true; else { return false; finally { pred.unlock(); Logical remove curr.unlock(); 82

83 Remove try { pred.lock(); curr.lock(); if (validate(pred,curr) { if (curr.key == key) { curr.marked = true; pred.next = curr.next; return true; else { return false; finally { pred.unlock(); physical remove curr.unlock(); Contains public boolean contains(item item) { int key = item.hashcode(); Node curr = this.head; while (curr.key < key) { curr = curr.next; return curr.key == key &&!curr.marked; 83

84 Contains public boolean contains(item item) { int key = item.hashcode(); Node curr = this.head; while (curr.key < key) { curr = curr.next; return curr.key == key &&!curr.marked; Start at the head Contains public boolean contains(item item) { int key = item.hashcode(); Node curr = this.head; while (curr.key < key) { curr = curr.next; return curr.key == key &&!curr.marked; Search key range 84

85 Contains public boolean contains(item item) { int key = item.hashcode(); Node curr = this.head; while (curr.key < key) { curr = curr.next; return curr.key == key &&!curr.marked; Traverse without locking (nodes may have been removed) Contains public boolean contains(item item) { int key = item.hashcode(); Node curr = this.head; while (curr.key < key) { curr = curr.next; return curr.key == key &&!curr.marked; Present and undeleted? 85

86 Lock-free Lists Logical Removal a 0 b 0 c 10 e 0 Physical Removal Non basta 171 Problema Logical Removal a 0 b 0 c 10 e 0 Physical Removal d 0 Node added 86

87 Bit di marcatura e puntatori a 0 b 0 c 10 e 0 AtomicMarkableReference Logical Removal = Set Mark Bit d 0 AtomicMarkableReference Operazione atomica Modificare il puntatore Modificare la marcatura Remove (due passi) Operare sul mark bit del campo next Modificare il predecessor 87

88 In Java AtomicMarkableReference class Java.util.concurrent.atomic package Reference address F mark bit Extracting Reference & Mark Public Object get(boolean[] marked); 88

89 Extracting Reference & Mark Public Object get(boolean[] marked); Returns reference Returns mark at array index 0! Extracting Reference Only public boolean ismarked(); Value of mark 89

90 Changing State Public boolean compareandset( Object expectedref, Object updateref, boolean expectedmark, boolean updatemark); Changing State If this is the current reference Public boolean compareandset( Object expectedref, Object updateref, boolean expectedmark, boolean updatemark); And this is the current mark 90

91 Changing State then change to this new reference Public boolean compareandset( Object expectedref, Object updateref, boolean expectedmark, boolean updatemark); and this new mark Changing State public boolean attemptmark( Object expectedref, boolean updatemark); 91

92 Changing State public boolean attemptmark( Object expectedref, boolean updatemark); If this is the current reference Changing State public boolean attemptmark( Object expectedref, boolean updatemark);.. then change to this new mark. 92

93 To Lock or Not to Lock Locking vs. Non-blocking: visioni estreme La risposta: compinare blocking e non blocking Esempi: Lazy list :blocking add() eremove() con wait-free contains() 93

Linked Lists: Locking, Lock- Free, and Beyond. Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit

Linked Lists: Locking, Lock- Free, and Beyond. Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Linked Lists: Locking, Lock- Free, and Beyond Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Last Lecture: Spin-Locks CS. spin lock critical section Resets lock

More information

Programming Paradigms for Concurrency Lecture 6 Synchronization of Concurrent Objects

Programming Paradigms for Concurrency Lecture 6 Synchronization of Concurrent Objects Programming Paradigms for Concurrency Lecture 6 Synchronization of Concurrent Objects Based on companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Modified by Thomas

More information

Last Lecture: Spin-Locks

Last Lecture: Spin-Locks Linked Lists: Locking, Lock- Free, and Beyond Last Lecture: Spin-Locks. spin lock CS critical section Resets lock upon exit Today: Concurrent Objects Adding threads should not lower throughput Contention

More information

Linked Lists: Locking, Lock- Free, and Beyond. Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit

Linked Lists: Locking, Lock- Free, and Beyond. Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Linked Lists: Locking, Lock- Free, and Beyond Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Coarse-Grained Synchronization Each method locks the object Avoid

More information

Coarse-grained and fine-grained locking Niklas Fors

Coarse-grained and fine-grained locking Niklas Fors Coarse-grained and fine-grained locking Niklas Fors 2013-12-05 Slides borrowed from: http://cs.brown.edu/courses/cs176course_information.shtml Art of Multiprocessor Programming 1 Topics discussed Coarse-grained

More information

Linked Lists: Locking, Lock-Free, and Beyond. Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit

Linked Lists: Locking, Lock-Free, and Beyond. Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Linked Lists: Locking, Lock-Free, and Beyond Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Concurrent Objects Adding threads should not lower throughput Contention

More information

Locking Granularity. CS 475, Spring 2019 Concurrent & Distributed Systems. With material from Herlihy & Shavit, Art of Multiprocessor Programming

Locking Granularity. CS 475, Spring 2019 Concurrent & Distributed Systems. With material from Herlihy & Shavit, Art of Multiprocessor Programming Locking Granularity CS 475, Spring 2019 Concurrent & Distributed Systems With material from Herlihy & Shavit, Art of Multiprocessor Programming Discussion: HW1 Part 4 addtolist(key1, newvalue) Thread 1

More information

Concurrency. Part 2, Chapter 10. Roger Wattenhofer. ETH Zurich Distributed Computing

Concurrency. Part 2, Chapter 10. Roger Wattenhofer. ETH Zurich Distributed Computing Concurrency Part 2, Chapter 10 Roger Wattenhofer ETH Zurich Distributed Computing www.disco.ethz.ch Overview Concurrent Linked List Fine-grained synchronization Optimistic synchronization Lazy synchronization

More information

Concurrent Data Structures

Concurrent Data Structures Concurrent Data Structures Chapter 8 Roger Wattenhofer ETH Zurich Distributed Computing www.disco.ethz.ch Overview Concurrent Linked List Fine-grained synchronization Optimistic synchronization Lazy synchronization

More information

Introduction to Concurrency and Multicore Programming. Slides adapted from Art of Multicore Programming by Herlihy and Shavit

Introduction to Concurrency and Multicore Programming. Slides adapted from Art of Multicore Programming by Herlihy and Shavit Introduction to Concurrency and Multicore Programming Slides adapted from Art of Multicore Programming by Herlihy and Shavit Overview Introduction Mutual Exclusion Linearizability Concurrent Data Structure

More information

The Art of Multiprocessor Programming Copyright 2007 Elsevier Inc. All rights reserved. October 3, 2007 DRAFT COPY

The Art of Multiprocessor Programming Copyright 2007 Elsevier Inc. All rights reserved. October 3, 2007 DRAFT COPY The Art of Multiprocessor Programming Copyright 2007 Elsevier Inc. All rights reserved Maurice Herlihy October 3, 2007 Nir Shavit 2 Contents 1 Introduction 13 1.1 Shared Objects and Synchronization..............

More information

Non-Blocking Synchronization

Non-Blocking Synchronization Herlihy Ch 9. Linked Lists: The Role of Locking Non-Blocking Synchronization BJÖRN A. JOHNSSON Overview? So far: Coarse- and fine-grained synchronization Optimistic synchronization Lazy synchronization

More information

Locking. Part 2, Chapter 7. Roger Wattenhofer. ETH Zurich Distributed Computing

Locking. Part 2, Chapter 7. Roger Wattenhofer. ETH Zurich Distributed Computing Locking Part 2, Chapter 7 Roger Wattenhofer ETH Zurich Distributed Computing www.disco.ethz.ch Overview Introduction Spin Locks Test-and-Set & Test-and-Test-and-Set Backoff lock Queue locks Concurrent

More information

Practice: Small Systems Part 2, Chapter 3

Practice: Small Systems Part 2, Chapter 3 Practice: Small Systems Part 2, Chapter 3 Roger Wattenhofer Overview Introduction Spin Locks Test and Set & Test and Test and Set Backoff lock Queue locks Concurrent Linked List Fine grained synchronization

More information

Linked Lists: The Role of Locking. Erez Petrank Technion

Linked Lists: The Role of Locking. Erez Petrank Technion Linked Lists: The Role of Locking Erez Petrank Technion Why Data Structures? Concurrent Data Structures are building blocks Used as libraries Construction principles apply broadly This Lecture Designing

More information

Parallel linked lists

Parallel linked lists Parallel linked lists Lecture 10 of TDA384/DIT391 (Principles of Conent Programming) Carlo A. Furia Chalmers University of Technology University of Gothenburg SP3 2017/2018 Today s menu The burden of locking

More information

Automatic Creation of Define.xml for ADaM

Automatic Creation of Define.xml for ADaM Automatic Creation of Define.xml for ADaM Alessia Sacco, Statistical Programmer www.valos.it info@valos.it 1 Indice Define.xml Pinnacle 21 Community Valos ADaM Metadata 2 Define.xml Cos è: Case Report

More information

Concurrent Skip Lists. Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit

Concurrent Skip Lists. Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Concurrent Skip Lists Companion slides for The by Maurice Herlihy & Nir Shavit Set Object Interface Collection of elements No duplicates Methods add() a new element remove() an element contains() if element

More information

Integrating Transactionally Boosted Data Structures with STM Frameworks: A Case Study on Set

Integrating Transactionally Boosted Data Structures with STM Frameworks: A Case Study on Set Integrating Transactionally Boosted Data Structures with STM Frameworks: A Case Study on Set Ahmed Hassan Roberto Palmieri Binoy Ravindran Virginia Tech hassan84@vt.edu robertop@vt.edu binoy@vt.edu Abstract

More information

Esempio con Google Play tore Example with Google Play tore

Esempio con Google Play tore Example with Google Play tore Guida all installazione ed uso dell App VR Tour Camerata Picena Per installare l App occorre aprire lo Store del vostro smartphone (Play Store o App Store) e cercare l App con parola chiave Camerata Picena.

More information

Formal Verification of a Lazy Concurrent List-Based Set Algorithm

Formal Verification of a Lazy Concurrent List-Based Set Algorithm Formal Verification of a Lazy Concurrent List-Based Set Algorithm Robert Colvin 1, Lindsay Groves 2, Victor Luchangco 3, and Mark Moir 3 1 ARC Centre for Complex Systems, School of Information Technology

More information

HydraVM: Mohamed M. Saad Mohamed Mohamedin, and Binoy Ravindran. Hot Topics in Parallelism (HotPar '12), Berkeley, CA

HydraVM: Mohamed M. Saad Mohamed Mohamedin, and Binoy Ravindran. Hot Topics in Parallelism (HotPar '12), Berkeley, CA HydraVM: Mohamed M. Saad Mohamed Mohamedin, and Binoy Ravindran Hot Topics in Parallelism (HotPar '12), Berkeley, CA Motivation & Objectives Background Architecture Program Reconstruction Implementation

More information

PROGRAMMAZIONE AVANZATA JAVA E C

PROGRAMMAZIONE AVANZATA JAVA E C PROGRAMMAZIONE AVANZATA JAVA E C Massimiliano Redolfi Lezione 10: multithreads, continue ThreadUtils public class ThreadUtils { public static void stop(executorservice executor) { executor.shutdown();

More information

GESTIONE DEL BACKGROUND. Programmazione Web 1

GESTIONE DEL BACKGROUND. Programmazione Web 1 GESTIONE DEL BACKGROUND Programmazione Web 1 Background background-color opacity Immagini nel background background-image background-repeat background-posi:on background-a;achment Programmazione Web 2

More information

Tecniche di Progettazione: Design Patterns

Tecniche di Progettazione: Design Patterns Tecniche di Progettazione: Design Patterns GoF: Decorator 1 Decorator Intent Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending

More information

Programmi di utilità

Programmi di utilità Programmi di utilità La classe SystemData per il calcolo dei tempi e della occupazione di memoria Per calcolare i tempi e la occupazione di memoria è necessario interagire con il sistema operativo, questo

More information

Surfing Ada for ESP Part 2

Surfing Ada for ESP Part 2 Surfing Ada for ESP Part 2 C. Montangero Dipartimento d Informatica Corso di ESperienze di Programmazione a.a. 2012/13 1 Table of contents 2 CHAPTER 9: Packages Packages allow the programmer to define

More information

Istruzioni passo passo per creare qualsiasi CUSTOM AWARD con BBLogger How to create step by step any CUSTOM AWARD by BBLogger

Istruzioni passo passo per creare qualsiasi CUSTOM AWARD con BBLogger How to create step by step any CUSTOM AWARD by BBLogger Istruzioni passo passo per creare qualsiasi CUSTOM AWARD con BBLogger How to create step by step any CUSTOM AWARD by BBLogger Aprire l applicazione e con il mouse andare sul pulsante custom award e cliccarci

More information

Design of Parallel and High-Performance Computing Fall 2015 Lecture: Locks and Lock-Free continued

Design of Parallel and High-Performance Computing Fall 2015 Lecture: Locks and Lock-Free continued Design of Parallel and High-Performance Computing Fall 2015 Lecture: Locks and Lock-Free continued Motivational video: https://www.youtube.com/watch?v=-7bpo1quxyw Instructor: Torsten Hoefler & Markus Püschel

More information

Distributed Computing Group

Distributed Computing Group Distributed Computing Group HS 2009 Prof. Dr. Roger Wattenhofer, Thomas Locher, Remo Meier, Benjamin Sigg Assigned: December 11, 2009 Discussion: none Distributed Systems Theory exercise 6 1 ALock2 Have

More information

Concurrency in JavaFX. Tecniche di Programmazione A.A. 2014/2015

Concurrency in JavaFX. Tecniche di Programmazione A.A. 2014/2015 Concurrency in JavaFX Tecniche di Programmazione Summary 1. The problem 2. javafx.concurrent package 2 The problem Concurrency in JavaFX UI Responsiveness JavaFX is single threaded The JavaFX application

More information

Draft Rosen Multicast. Massimiliano Sbaraglia

Draft Rosen Multicast. Massimiliano Sbaraglia Draft Rosen Multicast Massimiliano Sbaraglia MDT Draft Rosen layer 3 Multicast VPN Consiste in una VPN multicast con PIM (Protocol Indipendent Multicast) configurato sia all interno della VPN stessa che

More information

Implementazione Java di Alberi Binari. A.A. 16/17 DA1 - Andrea Pietracaprina 1

Implementazione Java di Alberi Binari. A.A. 16/17 DA1 - Andrea Pietracaprina 1 Implementazione Java di Alberi Binari A.A. 16/17 DA1 - Andrea Pietracaprina 1 Idea: struttura linkata Un nodo contiene Element Parent node Left child node Right child node B B A D A D C E C E A.A. 16/17

More information

MW MOC SUPPORTING AND TROUBLESHOOTING WINDOWS 10

MW MOC SUPPORTING AND TROUBLESHOOTING WINDOWS 10 MW10-3 - MOC 10982 - SUPPORTING AND TROUBLESHOOTING WINDOWS 10 Categoria: Windows 10 INFORMAZIONI SUL CORSO Durata: Categoria: Qualifica Istruttore: Dedicato a: Produttore: 5 Giorni Windows 10 Microsoft

More information

Solving Tridiagonal Systems on the T3E: a Message Passing RD algorithm.

Solving Tridiagonal Systems on the T3E: a Message Passing RD algorithm. Solving Tridiagonal Systems on the T3E: a Message Passing RD algorithm. A. Bevilacqua Dipartimento di Fisica, Università di Bologna INFN, Sezione di Bologna G. Spaletta Dipartimento di Matematica, Università

More information

An Introduction to CP

An Introduction to CP An Introduction to CP CP = A technique to solve CSPs and COPs CSP = Constraint Satisfaction Problem COP = Constraint Optimization Problem It. Problema di Soddisfacimento/Ottimizzazione di/con Vincoli A

More information

Metodo di Holt-Winters M. Romito 7 dicembre 2016

Metodo di Holt-Winters M. Romito 7 dicembre 2016 Metodo di Holt-Winters M. Romito 7 dicembre 2016 Smorzamento esponenziale (SE) e smorzamento esponenziale con trend (SET) auto.data

More information

A Simple Optimistic skip-list Algorithm

A Simple Optimistic skip-list Algorithm A Simple Optimistic skip-list Algorithm Maurice Herlihy Brown University & Sun Microsystems Laboratories Yossi Lev Brown University & Sun Microsystems Laboratories yosef.lev@sun.com Victor Luchangco Sun

More information

Design of Parallel and High-Performance Computing Fall 2017 Lecture: Locks (contd.) and Lock-Free

Design of Parallel and High-Performance Computing Fall 2017 Lecture: Locks (contd.) and Lock-Free Design of Parallel and High-Performance Computing Fall 2017 Lecture: Locks (contd.) and Lock-Free Motivational video: https://www.youtube.com/watch?v=jhapqipqquw Instructor: Torsten Hoefler & Markus Püschel

More information

Monitors; Software Transactional Memory

Monitors; Software Transactional Memory Monitors; Software Transactional Memory Parallel and Distributed Computing Department of Computer Science and Engineering (DEI) Instituto Superior Técnico October 18, 2012 CPD (DEI / IST) Parallel and

More information

Modern High-Performance Locking

Modern High-Performance Locking Modern High-Performance Locking Nir Shavit Slides based in part on The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Locks (Mutual Exclusion) public interface Lock { public void lock();

More information

Serie Sistema scorrevoleve regolabile o fisso per armadi con ante interne. Adjustable or fixed sliding system for wardrobes with internal doors

Serie Sistema scorrevoleve regolabile o fisso per armadi con ante interne. Adjustable or fixed sliding system for wardrobes with internal doors Serie Sistema scorrevoleve regolabile o fisso per armadi con ante interne Adjustable or fixed sliding system for wardrobes with internal doors , 1 1 1, 4 1 1 11, 4 4 4 4 4 4 Posizione binari Rails position

More information

Chapter 8: Deadlocks. The Deadlock Problem

Chapter 8: Deadlocks. The Deadlock Problem Chapter 8: Deadlocks System Model Deadlock Characterization Methods for Handling Deadlocks Deadlock Prevention Deadlock Avoidance Deadlock Detection Recovery from Deadlock Combined Approach to Deadlock

More information

SAFE DESIGNED IN ITALY CASSEFORTI PER HOTEL HOTEL SAFES

SAFE DESIGNED IN ITALY CASSEFORTI PER HOTEL HOTEL SAFES DESIGNED IN ITALY CASSEFORTI PER HOTEL HOTEL S : I MODELLI : MODELS TOP OPEN DRAWER Innovativa tastiera touch e display led integrato nella porta New touch keypad and stealthy LED display L apertura dall

More information

Lecture 7: Transactional Memory Intro. Topics: introduction to transactional memory, lazy implementation

Lecture 7: Transactional Memory Intro. Topics: introduction to transactional memory, lazy implementation Lecture 7: Transactional Memory Intro Topics: introduction to transactional memory, lazy implementation 1 Transactions New paradigm to simplify programming instead of lock-unlock, use transaction begin-end

More information

VHDL Packages. I Packages incapsulano elementi che possono essere condivisi tra più entity Un package consiste di due parti:

VHDL Packages. I Packages incapsulano elementi che possono essere condivisi tra più entity Un package consiste di due parti: 1 VHDL Packages I Packages incapsulano elementi che possono essere condivisi tra più entity Un package consiste di due parti: Declaration Dichiarazione di tutti gli elementi contenuti nel package Body

More information

A Concurrent Skip List Implementation with RTM and HLE

A Concurrent Skip List Implementation with RTM and HLE A Concurrent Skip List Implementation with RTM and HLE Fan Gao May 14, 2014 1 Background Semester Performed: Spring, 2014 Instructor: Maurice Herlihy The main idea of my project is to implement a skip

More information

MSQ3-8 - MOC UPDATING YOUR SQL SERVER SKILLS TO MICROSOFT SQL SERVER 2014

MSQ3-8 - MOC UPDATING YOUR SQL SERVER SKILLS TO MICROSOFT SQL SERVER 2014 MSQ3-8 - MOC 10977 - UPDATING YOUR SQL SERVER SKILLS TO MICROSOFT SQL SERVER 2014 Categoria: SQL Server 2014 e 2012 INFORMAZIONI SUL CORSO Durata: Categoria: Qualifica Istruttore: Dedicato a: Produttore:

More information

Title Description Participants Textbook

Title Description Participants Textbook Podcast Ch21c Title: Hash Table Implementation Description: Overview of implementation; load factors; add() method; rehash() method; remove() method Participants: Barry Kurtz (instructor); John Helfert

More information

General Insert Operation

General Insert Operation General Insert Operation Inserting a new node before a node referenced by curr involves updating only adjacent links and does not affect the other elements in the sequence. General Insert Operation (continued)

More information

Reagent Based Lock Free Concurrent Link List Spring 2012 Ancsa Hannak and Mitesh Jain April 28, 2012

Reagent Based Lock Free Concurrent Link List Spring 2012 Ancsa Hannak and Mitesh Jain April 28, 2012 Reagent Based Lock Free Concurrent Link List Spring 0 Ancsa Hannak and Mitesh Jain April 8, 0 Introduction The most commonly used implementation of synchronization is blocking algorithms. They utilize

More information

Tecniche di Progettazione: Design Patterns

Tecniche di Progettazione: Design Patterns Tecniche di Progettazione: Design Patterns GoF: Decorator 1 An example 2 Your first idea of implementation 3 In reality 4 Now a beverage can be mixed from different condiment to form a new beverage 5 6

More information

Classical Planning: Limits

Classical Planning: Limits Classical Planning: Limits Spacecraft Domain Spacecraft Domain Extensions Time Resources Constraints Uncertainty Utility Model Temporal Interval Relations Interval Algebra (aka Allen Algebra) [Allen 83]

More information

Lecture 21: Transactional Memory. Topics: consistency model recap, introduction to transactional memory

Lecture 21: Transactional Memory. Topics: consistency model recap, introduction to transactional memory Lecture 21: Transactional Memory Topics: consistency model recap, introduction to transactional memory 1 Example Programs Initially, A = B = 0 P1 P2 A = 1 B = 1 if (B == 0) if (A == 0) critical section

More information

Laboratorio di Sistemi Software Design Patterns 2

Laboratorio di Sistemi Software Design Patterns 2 TITLE Laboratorio di Sistemi Software Design Patterns 2 Luca Padovani (A-L) Riccardo Solmi (M-Z) 1 Indice degli argomenti Tipi di Design Patterns Creazionali, strutturali, comportamentali Design Patterns

More information

MEGA. Project number: IST GEM EyesWeb WK4 Tools software contributions to the MEGA SE. GEMWK4 Library, v

MEGA. Project number: IST GEM EyesWeb WK4 Tools software contributions to the MEGA SE. GEMWK4 Library, v WP4/6 May 2001 MEGA Project number: IST-1999-20410 GEM EyesWeb WK4 Tools software contributions to the MEGA SE GEMWK4 Library, v. 1.0 http:www.generalmusic.com Contact: Carlo Drioli drioli@dei.unipd.it

More information

MW MOC INSTALLING AND CONFIGURING WINDOWS 10

MW MOC INSTALLING AND CONFIGURING WINDOWS 10 MW10-4 - MOC 20698 - INSTALLING AND CONFIGURING WINDOWS 10 Categoria: Windows 10 INFORMAZIONI SUL CORSO Durata: Categoria: Qualifica Istruttore: Dedicato a: Produttore: 5 Giorni Windows 10 Microsoft Certified

More information

CS 310: Hash Table Collision Resolution Strategies

CS 310: Hash Table Collision Resolution Strategies CS 310: Hash Table Collision Resolution Strategies Chris Kauffman Week 7-1 Logistics HW 2 Due Wednesday night Test Cases Final Questions for group discussion? Goals Today Midterm Exam Next Monday Review

More information

SAFE. DESIGNED in italy CASSEFORTI PER HOTEL HOTEL SAFES

SAFE. DESIGNED in italy CASSEFORTI PER HOTEL HOTEL SAFES SAFE DESIGNED in italy CASSEFORTI PER HOTEL HOTEL SAFES SAFE TOP OPEN SAFE DRAWER Innovativo sistema touch e display led integrato nella porta attivabile con tast New touch keypad and stealthy LED display,

More information

Java collections framework

Java collections framework Java collections framework Commonly reusable collection data structures Java Collections Framework (JCF) Collection an object that represents a group of objects Collection Framework A unified architecture

More information

Raccolta semiseria di errori comuni e stili di programmazione da evitare.

Raccolta semiseria di errori comuni e stili di programmazione da evitare. Lo Stupidario di Fondamenti 2 Raccolta semiseria di errori comuni e stili di programmazione da evitare. Daniele Paolo Scarpazza Politecnico di Milano Ultimo aggiornamento: 2004-03-03 Lo Stupidario di Fondamenti

More information

Monitors; Software Transactional Memory

Monitors; Software Transactional Memory Monitors; Software Transactional Memory Parallel and Distributed Computing Department of Computer Science and Engineering (DEI) Instituto Superior Técnico March 17, 2016 CPD (DEI / IST) Parallel and Distributed

More information

Tecniche di Progettazione: Design Patterns

Tecniche di Progettazione: Design Patterns Tecniche di Progettazione: Design Patterns GoF: Decorator 1 2 3 4 Decorator Intent Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing

More information

HTML avanzato e HTML5 (per cominciare)

HTML avanzato e HTML5 (per cominciare) HTML avanzato e HTML5 (per cominciare) ugo.rinaldi@gmail.com Argomenti Nuovi elementi semantici Nuovi elementi per il form Tip & Tricks 2 Struttura del documento

More information

Implementazione Alberi Binari. mediante. Linked Structure ( 7.3.4)

Implementazione Alberi Binari. mediante. Linked Structure ( 7.3.4) Implementazione Alberi Binari mediante Linked Structure ( 7.3.4) 1 Implementazione di AlberoBinario Vedi testo pag. 290 B A D C E 2 1 Implementazione di AlberoBinario Position Tree extends BTPosition extends

More information

Company Profile 2017

Company Profile 2017 Company Profile 2017 Industrial integrated IoT Solution Provider Leading network attached storage provider Unique Electronic Manufacturing Service Intelligent Medical System Provider Leading Automation

More information

GAF Geography-informed Energy Conservation for Ad Hoc Routing

GAF Geography-informed Energy Conservation for Ad Hoc Routing GAF Geography-informed Energy Conservation for Ad Hoc Routing Ya Xu, John Heidemann, Deborah Estrin USC/ISI, UCLA Energy? Node Density Node Redundancy in Ad Hoc Routing GAF: Geographic Adaptive Fidelity

More information

# $ $ A.A. 2006/07 Tutor: Daniele Tiles &== %% & '( ) * + $, $ $ -' %./, $ * $ $ 7 5 &7 2$ $ $ 3&4&&& 5 +8$ 9%:

# $ $ A.A. 2006/07 Tutor: Daniele Tiles &== %% & '( ) * + $, $ $ -' %./, $ * $ $ 7 5 &7 2$ $ $ 3&4&&& 5 +8$ 9%: ! A.A. 2006/07 Tutor: Daniele Tiles daniele.tiles@studio.unibo.it # $ $ %% & '( ) * + $, $ $ -' %./, 01 5 6 $ * $ $ 7 5 &7 2$ $ $ 3&4&&& 5 +8$ 9%: 5 6;< &&$ $ &== " 1&:+$? &7$ $ @$ 1&&# &A1+ $ $ $, $,

More information

Sass: Syntactically Awesome Stylesheet. Laura Farinetti Dipartimento di Automatica e Informatica Politecnico di Torino

Sass: Syntactically Awesome Stylesheet. Laura Farinetti Dipartimento di Automatica e Informatica Politecnico di Torino Sass: Syntactically Awesome Stylesheet Laura Farinetti Dipartimento di Automatica e Informatica Politecnico di Torino laura.farinetti@polito.it 1 Sass Syntactically Awesome Stylesheet Sass is an extension

More information

JavaFX Application Structure. Tecniche di Programmazione A.A. 2017/2018

JavaFX Application Structure. Tecniche di Programmazione A.A. 2017/2018 JavaFX Application Structure Tecniche di Programmazione Application structure Introduction to JavaFX Empty JavaFX window public class Main extends Application { @Override public void start(stage stage)

More information

Java collections framework

Java collections framework Java collections framework Commonly reusable collection data structures Abstract Data Type ADTs store data and allow various operations on the data to access and change it ADTs are mathematical models

More information

Compilazione e assert GDB Valgrind. Guida al debugging. Luca Versari. Aprile 19, Luca Versari Guida al debugging

Compilazione e assert GDB Valgrind. Guida al debugging. Luca Versari. Aprile 19, Luca Versari Guida al debugging Aprile 19, 2017 Indice 1 Compilazione e assert 2 GDB 3 Valgrind Compilazione Compilazione standard $ gcc programma.c -o programma Compilazione con (quasi) tutti i warning $ gcc -O2 -Wall programma.c -o

More information

CORSO MOC10265: Developing Data Access Solutions with Microsoft. CEGEKA Education corsi di formazione professionale

CORSO MOC10265: Developing Data Access Solutions with Microsoft. CEGEKA Education corsi di formazione professionale CORSO MOC10265: Developing Data Access Solutions with Microsoft CEGEKA Education corsi di formazione professionale Developing Data Access Solutions with Microsoft In this course, experienced developers

More information

Optimistic Transactional Boosting

Optimistic Transactional Boosting 1 Optimistic ransactional Boosting Ahmed Hassan, Roberto Palmieri, Sebastiano Peluso, and Binoy Ravindran Abstract he last two decades witnessed the success of many efficient designs of concurrent data

More information

Uguaglianza e Identità. (no, non avete sbagliato corso )

Uguaglianza e Identità. (no, non avete sbagliato corso ) 1 Uguaglianza e Identità (no, non avete sbagliato corso ) Fondamenti di Java Che vuol dire "uguaglianza"? Che vuol dire "Identità"? Class P class P { int x; int y; public String tostring() { return ("x="+x+"

More information

CORSO MOC10215: Implementing and Managing Microsoft Server Virtualization. CEGEKA Education corsi di formazione professionale

CORSO MOC10215: Implementing and Managing Microsoft Server Virtualization. CEGEKA Education corsi di formazione professionale CORSO MOC10215: Implementing and Managing Microsoft Server Virtualization CEGEKA Education corsi di formazione professionale Implementing and Managing Microsoft Server Virtualization This five-day, instructor-led

More information

PfR Performance Routing. Massimiliano Sbaraglia

PfR Performance Routing. Massimiliano Sbaraglia PfR Performance Routing Massimiliano Sbaraglia PfR advantage PfR abilita i processi di routing su base best path (non più su prefix-destination) basandosi su definite policy; PfR potenzia i tradizionali

More information

On Developing Optimistic Transactional Lazy Set

On Developing Optimistic Transactional Lazy Set On Developing Optimistic Transactional Set [Technical Report] Ahmed Hassan, Roberto Palmieri, Binoy Ravindran Virginia Tech {hassan84;robertop;binoy}@vt.edu Abstract. Transactional data structures with

More information

MWS3-3 - MOC NETWORKING WITH WINDOWS SERVER 2016

MWS3-3 - MOC NETWORKING WITH WINDOWS SERVER 2016 MWS3-3 - MOC 20741 - NETWORKING WITH WINDOWS SERVER 2016 Categoria: Windows Server 2016 INFORMAZIONI SUL CORSO Durata: Categoria: Qualifica Istruttore: Dedicato a: Produttore: 5,00000 Giorni Windows Server

More information

google adwords guida F511591EE4389B71B65D236A6F16B219 Google Adwords Guida 1 / 6

google adwords guida F511591EE4389B71B65D236A6F16B219 Google Adwords Guida 1 / 6 Google Adwords Guida 1 / 6 2 / 6 3 / 6 Google Adwords Guida La tua guida a Google Ads Nozioni di base di Google Ads Creare annunci e campagne Scegliere dove e quando pubblicare gli annunci Come scoprire

More information

Recursive Objects. Singly Linked List (Part 2)

Recursive Objects. Singly Linked List (Part 2) Recursive Objects Singly Linked List (Part 2) 1 Operations at the head of the list operations at the head of the list require special handling because there is no node before the head node 2 Adding to

More information

Campo Minato Nel Form1 sono presenti i seguenti componenti:

Campo Minato Nel Form1 sono presenti i seguenti componenti: Campo Minato Nel Form1 sono presenti i seguenti componenti: menustrip1 panel1 picturebox1 label_livello panel2 menustrip1 button_unknown button_free button_fall button_quest button_expl button_bomb Il

More information

Binary trees. Binary Tree. A binary tree is a tree where each node has at most two children The two children are ordered ( left, right ) 4/23/2013

Binary trees. Binary Tree. A binary tree is a tree where each node has at most two children The two children are ordered ( left, right ) 4/23/2013 Binary trees Binary Tree A binary tree is a tree where each node has at most two children The two children are ordered ( left, right ) Right sub-tree vs. Left sub-tree 2 1 Balanced trees (Height-)balanced

More information

Design and Evaluation of Scalable Software

Design and Evaluation of Scalable Software Design and Evaluation of Scalable Software Damian Dechev 1,2 1: University of Central Florida, CSE S3 Lab, http://cse.eecs.ucf.edu Orlando, FL 2: Sandia Labs, Livermore, CA Traditional Scaling Process

More information

Model Driven Engineering : Basic Concepts

Model Driven Engineering : Basic Concepts Model Driven Engineering : Basic Concepts Lesson 3 Model to Text Transformations : ACCELEO Guglielmo De Angelis CNR - IASI / ISTI guglielmo.deangelis@isti.cnr.it model transformation MMM model transformation

More information

CORSO MOC : Administering System Center Configuration Manager. CEGEKA Education corsi di formazione professionale

CORSO MOC : Administering System Center Configuration Manager. CEGEKA Education corsi di formazione professionale CORSO MOC20703-1: Administering System Center Configuration Manager CEGEKA Education corsi di formazione professionale Administering System Center Configuration Manager This five-day course describes how

More information

Cornell University Computer Science 211 Second Preliminary Examination 18 April 2006

Cornell University Computer Science 211 Second Preliminary Examination 18 April 2006 Cornell University Computer Science 211 Second Preliminary Examination 18 April 2006 There are 4 problems on this exam. It is 8 pages long, so make sure you have the whole exam. You will have 1 1 hours

More information

cornice vetro trasparente frame transparent glass

cornice vetro trasparente frame transparent glass m mario nanni 99 corpo illuminante -proiettore da incasso carrabile per interni ed esterni in lega di alluminio peraluman con grado di protezione IP7 IK0 (0 joules). disponibile con vetro sabbiato o trasparente,

More information

Higher-order operators. Higher-order operators. Scala. Higher-order operators. Java8. numerosi operatori higher-order sulle collezioni

Higher-order operators. Higher-order operators. Scala. Higher-order operators. Java8. numerosi operatori higher-order sulle collezioni numerosi operatori higher-order sulle collezioni fold left /: fold right :\ filter partition find foreach takewhile dropwhile span (Splits into a prefix/suffix pair according to a predicate) forall exists

More information

Chapter 3 Transport Layer

Chapter 3 Transport Layer Chapter 3 Transport Layer Reti di Elaboratori Corso di Laurea in Informatica Università degli Studi di Roma La Sapienza Prof.ssa Chiara Petrioli Parte di queste slide sono state prese dal materiale associato

More information

Concurrent Data Structures Concurrent Algorithms 2016

Concurrent Data Structures Concurrent Algorithms 2016 Concurrent Data Structures Concurrent Algorithms 2016 Tudor David (based on slides by Vasileios Trigonakis) Tudor David 11.2016 1 Data Structures (DSs) Constructs for efficiently storing and retrieving

More information

CORSO MOC2810: Fundamentals of Network Security. CEGEKA Education corsi di formazione professionale

CORSO MOC2810: Fundamentals of Network Security. CEGEKA Education corsi di formazione professionale CORSO MOC2810: Fundamentals of Network Security CEGEKA Education corsi di formazione professionale Fundamentals of Network Security This four-day, instructor-led course provides students with the knowledge

More information

Fabrizio Villa INAF / IASF Bologna

Fabrizio Villa INAF / IASF Bologna Fabrizio Villa INAF / IASF Bologna villa@iasfbo.inaf.it Directivity 54.09 dbi % DEP 0.29 FWHM 23.09 arcmin e 1.41 Spill-over 0.16% Legge di Snell Angolo di incidenza = angolo di riflessione Principio di

More information

CS 310: Hash Table Collision Resolution

CS 310: Hash Table Collision Resolution CS 310: Hash Table Collision Resolution Chris Kauffman Week 7-1 Logistics Reading Weiss Ch 20: Hash Table Weiss Ch 6.7-8: Maps/Sets Goals Today Hash Functions Separate Chaining In Hash Tables Upcoming

More information

6.852: Distributed Algorithms Fall, Class 20

6.852: Distributed Algorithms Fall, Class 20 6.852: Distributed Algorithms Fall, 2009 Class 20 Today s plan z z z Transactional Memory Reading: Herlihy-Shavit, Chapter 18 Guerraoui, Kapalka, Chapters 1-4 Next: z z z Asynchronous networks vs asynchronous

More information

Building Efficient Concurrent Graph Object through Composition of List-based Set

Building Efficient Concurrent Graph Object through Composition of List-based Set Building Efficient Concurrent Graph Object through Composition of List-based Set Sathya Peri Muktikanta Sa Nandini Singhal Department of Computer Science & Engineering Indian Institute of Technology Hyderabad

More information

Chapter 9 Formattazione Input/Output

Chapter 9 Formattazione Input/Output 1 Chapter 9 Formattazione Input/Output 2 Flussi 9.2 Flussi Sequenze di caratteri organizzate in linee Ogni linea consiste di zero o più caratteri e finisce con il carattere newline Lo standard ANSI C deve

More information

Programmazione lato server. Cookies e Sessioni. Applicazioni di Rete M. Ribaudo - DISI. Cookies

Programmazione lato server. Cookies e Sessioni. Applicazioni di Rete M. Ribaudo - DISI. Cookies Programmazione lato server Cookies e Sessioni Cookies a cookie is a bit of text, containing some unique information, that web servers send in the HTTP header. The client s browser keeps a list of cookies

More information

Lists. Problem. Store a set of unique words (duplicates shall be ignored) Class interface 4/23/2013. Arrays reloaded

Lists. Problem. Store a set of unique words (duplicates shall be ignored) Class interface 4/23/2013. Arrays reloaded Lists Arrays reloaded Problem Store a set of unique words (duplicates shall be ignored) Class interface public class WordSet { public Boolean add(string str); public void delete(string str); public void

More information

Form HTML FORM E PHP. Un insieme di elemen5 in una pagina web con cui l'utente interagisce per inviare informazioni ad uno script

Form HTML FORM E PHP. Un insieme di elemen5 in una pagina web con cui l'utente interagisce per inviare informazioni ad uno script HTML FORM E PHP 2014-2015 Programmazione Web 1 Form Un insieme di elemen5 in una pagina web con cui l'utente interagisce per inviare informazioni ad uno script Realizzazione di due cose la pagina contente

More information