C/C++ Programming Abstractions for Parallelism and Concurrency
CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism &...
-
Upload
augustus-chapman -
Category
Documents
-
view
216 -
download
1
Transcript of CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism &...
![Page 1: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/1.jpg)
Correctness Criteria for Parallelism & Concurrency 1
CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM
6/16/2010
![Page 2: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/2.jpg)
Correctness Criteria for Parallelism & Concurrency 2
Contracts – Correctness for Sequential Code
6/16/2010
![Page 3: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/3.jpg)
Correctness Criteria for Parallelism & Concurrency 3
Contracts – Correctness for Sequential Code
• Assertions• A predicate expected to hold at a particular program point
• Precondition• A predicate expected to hold at a function call• A failure can be blamed on the caller
• Postcondition• A predicate expected to hold at a function return• A failure can be blamed on the callee
6/16/2010
![Page 4: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/4.jpg)
Correctness Criteria for Parallelism & Concurrency 4
int Divide(int n, int d) { return n/d; }
Code Contracts for .Net
6/16/2010
![Page 5: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/5.jpg)
Correctness Criteria for Parallelism & Concurrency 5
int Divide(int n, int d) { Contract.Requires( 0 != d ); return n/d; }
Preconditions using Requires
6/16/2010
![Page 6: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/6.jpg)
Correctness Criteria for Parallelism & Concurrency 6
int Divide(int n, int d) { Contract.Requires( 0 != d ); Contract.Ensures( Contract.Result<int>() * d <= n && Contract.Result<int>() * d > n-d );
return n/d; }
Preconditions using Ensures
6/16/2010
![Page 7: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/7.jpg)
Correctness Criteria for Parallelism & Concurrency 7
Example: Library APIs
6/16/2010
![Page 8: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/8.jpg)
Correctness Criteria for Parallelism & Concurrency 8
Example: System Call API
6/16/2010
![Page 9: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/9.jpg)
Correctness Criteria for Parallelism & Concurrency 9
Correctness for Concurrency & Parallelism
• Reuse contracts written for sequential code
• Relate correctness of concurrent/parallel executions to correctness of appropriate sequential executions
6/16/2010
![Page 10: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/10.jpg)
Correctness Criteria for Parallelism & Concurrency 10
Coin Sorting Example
Vending Machine
SortCoins
accept reject
6/16/2010
![Page 11: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/11.jpg)
Correctness Criteria for Parallelism & Concurrency 11
Use Contracts for Correctness Criteria
• SortCoins accepts a set of coins and returns a set of bad ones• Parallelizing SortCoins should not change the contract
SortCoins(…) { Contract.Requires(…); Contract.Ensures(…);
}
SequentialImplementation
SortCoins(…) { Contract.Requires(…); Contract.Ensures(…);
}
ParallelImplementation
6/16/2010
![Page 12: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/12.jpg)
Correctness Criteria for Parallelism & Concurrency 12
Parallelizing can sometimes produce correct but different outputs
SequentialSortCoins
accept reject
ParallelSortCoins
accept reject
The order of coins can change
6/16/2010
![Page 13: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/13.jpg)
Correctness Criteria for Parallelism & Concurrency 13
Restrictive Contracts Can Limit Parallelism
• The order of coins returned by SortCoins might be different from the input order• Do care about the total amount returned• If the contracts enforce the ordering, resulting
parallelization might be unacceptably slow• Design interfaces in such a way that contracts are not
restrictive
6/16/2010
![Page 14: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/14.jpg)
Correctness Criteria for Parallelism & Concurrency 14
Strategies For Reasoning About Parallel Code
• How do we know if a parallel loop satisfies its contract? • Reasoning about parallel executions is hard
General Strategy:1. Make sure that every parallel behavior is equal to
some sequential behavior2. Convince that the sequential behavior satisfies the
contract
6/16/2010
![Page 15: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/15.jpg)
Correctness Criteria for Parallelism & Concurrency 15
Independent Loops
• Let m(1) … m(n) be the loop iterations
• Two iterations m(j) and m(k) (j ≠ k) are dependent if they access the same memory location and at least one of them is a write.
• Loop iterations are independent if no two of them are dependent
6/16/2010
![Page 16: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/16.jpg)
Correctness Criteria for Parallelism & Concurrency 16
Dependent Loops• Dependencies need to be made explicit• No data races
• Reason that order of dependent operations don’t matter• e.g. These operations are commutative and associative• Recall: reduce/scan
6/16/2010
![Page 17: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/17.jpg)
Correctness Criteria for Parallelism & Concurrency 17
Determinism:A New Correctness Criteria• Pre and post conditions do two things• Specify how the function behaves sequentially• Enforce the same behavior when parallelized
int ComputeSum ( IEnumerable<int> input){ Contract.Requires ( input != null); Contract.Ensures ( Contract.Result<int>() == input.Sum(i => i) )); //implementation}
6/16/2010
![Page 18: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/18.jpg)
Correctness Criteria for Parallelism & Concurrency 18
Determinism Contract• Allows you to check parallel correctness• Without having to specify the sequential contract• The output of the function does not depend on task
interleavings for a given input
int ComputeSum ( IEnumerable<int> input){ Contract.Requires ( input != null); IsDeterministic ( Contract.Result<int>(), input ); //implementation}
6/16/2010
![Page 19: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/19.jpg)
Correctness Criteria for Parallelism & Concurrency 19
Determinism Checking
Is same as saying
For some deterministic function F
Very useful when specifying F is tedious
Contract.IsDeterministic ( output, {input1, input2, … })
Contract.Ensures ( output == F ( input1, input2, … ) )
6/16/2010
![Page 20: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/20.jpg)
Correctness Criteria for Parallelism & Concurrency 20
Determinism Checking
Is same as saying
For some deterministic function F
Contract.IsDeterministic ( output, {input1, input2, … }, comp)
Contract.Ensures ( comp(output, F ( input1, input2, … ) )
6/16/2010
![Page 21: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/21.jpg)
Correctness Criteria for Parallelism & Concurrency 21
Strategies for Checking Determinism
6/16/2010
![Page 22: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/22.jpg)
Correctness Criteria for Parallelism & Concurrency 22
Concurrent Objects• Can be called concurrently by many threads• Examples• Work Stealing Queue
6/16/2010
![Page 23: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/23.jpg)
Correctness Criteria for Parallelism & Concurrency 23
Concurrent Objects• Can be called concurrently by many entities• Examples• Work Stealing Queue• C Runtime library• Operating System • Data bases
6/16/2010
![Page 24: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/24.jpg)
Correctness Criteria for Parallelism & Concurrency 24
Correctness Criteria• Informally called “thread safety”• What does “thread safety” mean to you?
6/16/2010
![Page 25: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/25.jpg)
Correctness Criteria for Parallelism & Concurrency 25
A Simple Concurrent Object• Sequential Queue• Add(item)• TryTake() returns an item or “empty”• Size() returns # of items in queue
• Consider ConcurrentQueue and its relationship to Queue
6/16/2010
![Page 26: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/26.jpg)
Let’s Write a Test
q = new ConcurrentQueue();
q.Add(10) t=q.TryTake()
Assert( ? )
![Page 27: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/27.jpg)
q = new ConcurrentQueue();
q.Add(10) t=q.TryTake()
Assert:q.Size() is 0 or 1
Let’s Write a Test
![Page 28: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/28.jpg)
q = new ConcurrentQueue();
q.Add(10); t=q.TryTake();
Assert: t = fail && q.size() = 1|| t = 10 && q.size() = 0
Let’s Write a Test
![Page 29: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/29.jpg)
q = new ConcurrentQueue();
q.Add(10)t=q.TryTake()
q.Add(20)u = q.TryTake()
Assert ( ? )
Let’s Write a Test
![Page 30: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/30.jpg)
q = new ConcurrentQueue();
Assert:q.Size() == 0
t = 10 || t = 20u = 10 || t = 20
u != t
q.Add(10)t=q.TryTake()
q.Add(20)u = q.TryTake()
Let’s Write a Test
![Page 31: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/31.jpg)
Correctness Criteria for Parallelism & Concurrency 31
Linearizability• The correctness notion closest to “thread safety”
• A concurrent component behaves as if only one thread can enter the component at a time
6/16/2010
![Page 32: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/32.jpg)
Correctness Criteria for Parallelism & Concurrency 32
“Expected” Behavior?
Client 1
Client 2
Client 3
Add 10 return Add 20 return
TryTake return10
TryTake return “empty”
6/16/2010
![Page 33: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/33.jpg)
Correctness Criteria for Parallelism & Concurrency 33
“Expected” Behavior?
Client 1
Client 2
Client 3
Add 10 return Add 20 return
TryTake return10
TryTake return “empty”
Client 1
Client 2
Client 3
Add 10 return
Add 20 return
TryTake return20
TryTake return “empty”
6/16/2010
![Page 34: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/34.jpg)
Correctness Criteria for Parallelism & Concurrency 34
Linearizability• Component is linearizable if all operations • Appear to take effect atomically at a single temporal point• And that point is between the call and the return
• “As if the requests went to the queue one at a time”
Client 1
Client 2
Client 3
Add 10 return Add 20 return
TryTake return10
TryTake return “empty”
6/16/2010
![Page 35: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/35.jpg)
Correctness Criteria for Parallelism & Concurrency 35
Linearizability vs Seriazliability?• Serializability• All operations (transactions) appear to take effect
atomically at a single temporal point
6/16/2010
![Page 36: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/36.jpg)
Correctness Criteria for Parallelism & Concurrency 36
Linearizability vs Seriazliability?• Serializability• All operations (transactions) appear to take effect
atomically at a single temporal point • Linearizability• All operations to take effect atomically at a single
temporal point • That point is between the call and return
6/16/2010
![Page 37: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/37.jpg)
Correctness Criteria for Parallelism & Concurrency 37
Serializable behavior that is not Linearizable
• Linearizability assumes that there is a global observer that can observe that Thread 1 finished before Thread 2 started
Thread 1
Thread 2Add 10 return
TryTake return “empty”
6/16/2010
![Page 38: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/38.jpg)
Correctness Criteria for Parallelism & Concurrency 38
Serializability does not compose
• The behavior of the blue queue and green queue are individually serializable• But, together, the behavior is not serializable
Thread 1
Thread 2Add 10 return
TryTake return “empty”Add 10 return
TryTake return “empty”
6/16/2010
![Page 39: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/39.jpg)
Correctness Criteria for Parallelism & Concurrency 39
Formalizing Linearizability• Define the set of observables for each operation• Call operation: value of all the arugments• Return operation:
• An event: • Thread Id, Object Id, Call/Return, Operation, Observables
6/16/2010
Add 10 return
![Page 40: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/40.jpg)
Correctness Criteria for Parallelism & Concurrency 40
A Concurrent History• Sequence of Events• <T1, q, Call, Add, 10>• <T2, q, Call, TryTake, void>• <T1, q, Ret, Add, void>• <T2, q, Ret, TryTake, “empty”>
6/16/2010
Thread 1
Thread 2Add 10 return
TryTake return “empty”
![Page 41: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/41.jpg)
Correctness Criteria for Parallelism & Concurrency 41
A Concurrent History• Sequence of Events• <T1, q, Call, Add, 10>• <T2, q, Call, TryTake, void>• <T1, q, Ret, Add, void>• <T2, q, Ret, TryTake, “empty”>
6/16/2010
Thread 1
Thread 2Add 10 return
TryTake return “empty”
We will only focus on single object histories
![Page 42: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/42.jpg)
Correctness Criteria for Parallelism & Concurrency 42
A Concurrent History• Sequence of Events• <T1, q, Call, Add, 10>• <T2, q, Call, TryTake, void>• <T1, q, Ret, Add, void>• <T2, q, Ret, TryTake, “empty”>
6/16/2010
Thread 1
Thread 2Add 10 return
TryTake return “empty”
Also, we will only focus on complete histories – every call has a return
![Page 43: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/43.jpg)
Correctness Criteria for Parallelism & Concurrency 43
A Serial History• A concurrent history where every call is followed by its
matching return• <T1, q, Call, Add, 10>• <T1, q, Ret, Add, void>• <T2, q, Call, TryTake, void>• <T2, q, Ret, TryTake, “empty”>
6/16/2010
Thread 1
Thread 2Add 10 return
TryTake return “empty”
![Page 44: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/44.jpg)
Correctness Criteria for Parallelism & Concurrency 44
Sequential Specification of an Object
• The set of all serial histories define the sequential behavior of an object
• Assume we have a mechanism to enumerate this set and store the set in a database
6/16/2010
![Page 45: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/45.jpg)
Correctness Criteria for Parallelism & Concurrency 45
Equivalent Histories• Two concurrent histories are equivalent if • Each thread performs operations in the same order• And sees the same observations
6/16/2010
Client 1
Client 2Add 10 return Add 20 return
TryTake return10
Client 1
Client 2Add 10 return Add 20 return
TryTake return10
![Page 46: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/46.jpg)
Correctness Criteria for Parallelism & Concurrency 46
Concurrent Operations in a History• Two operations p and q are concurrent in a history if
their duration overlap• ! (p.ret < q.call || q.ret < p.call)
6/16/2010
Thread 1
Thread 2Add 10 return
TryTake return “empty”
![Page 47: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/47.jpg)
Correctness Criteria for Parallelism & Concurrency 47
Concurrent Operations in a History• Two operations p and q are concurrent in a history if
their duration overlap• ! (p.ret < q.call || q.ret < p.call)
• Non-Concurrent operations define a “performed-before” order
6/16/2010
Client 1
Client 2Add 10 return Add 20 return
TryTake return10
![Page 48: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/48.jpg)
Correctness Criteria for Parallelism & Concurrency 48
Linearizability• A concurrent history is linearizable if it is equivalent to
a (serial) history in the sequential specification,
• Such that all operations that are “performed before” in the concurrent history are also “performed before” in the serial history
6/16/2010
![Page 49: CORRECTNESS CRITERIA FOR CONCURRENCY & PARALLELISM 6/16/2010 Correctness Criteria for Parallelism & Concurrency 1.](https://reader036.fdocuments.in/reader036/viewer/2022062720/56649f165503460f94c2c9b8/html5/thumbnails/49.jpg)
Correctness Criteria for Parallelism & Concurrency 496/16/2010