BuySell 50, $1260, $10 60, $11100, $11 30, $1030, $12
BuySell 50, $1260, $10 60, $11100, $11 30, $1030, $12 Price: $10
BuySell 60, $1110, $10 30, $10100, $11 30, $12 Price: $10
BuySell 60, $1110, $10 30, $10100, $11 30, $12 Price: $10
BuySell 50, $11100, $11 30, $1030, $12 Price: $10
BuySell 50, $11100, $11 30, $1030, $12 Price: $11
BuySell 30, $1050, $11 30, $12 Price: $11
Not ValidatedValidatedProcessed Validator Processor
MethodTime in msec Single Thread300 Single Thread w/ Lock Threads w/ Lock Single Thread w/ CAS Threads w/ CAS Single Thread w/ Volatile Write
Queue (Lack of) Fairness Consumer Thread 1 Consumer Thread BuySell 100
Queue (Lack of) Fairness Consumer Thread 1 Consumer Thread BuySell 100
Queue (Lack of) Fairness Consumer Thread 1 Consumer Thread 2 BuySell Can you tell which order will be executed 1 st ?
Validator Processor
Symbol=A-HSymbol=I-SSymbol=T-Z Validator Processor Processor thread pool per segment
Single Processor thread pool, pick random segment Symbol=A-HSymbol=I-SSymbol=T-Z Processor
Single processor thread per segment Symbol=A-HSymbol=I-SSymbol=T-Z Processor
Shared thread pool, mark segments under processing (CAS) Segment 1Segment 2Segment 3 Processor Segment 1 Segment 2 Segment 3
Shared thread pool, mark segments under processing (CAS) Segment 1Segment 2Segment 3 Processor Segment 1X Segment 2 Segment 3
Shared thread pool, mark segments under processing (CAS) Segment 1Segment 2Segment 3 Processor Segment 1X Segment 2 Segment 3X
Shared thread pool, mark segments under processing (CAS) Segment 1Segment 2Segment 3 Processor Segment 1 Segment 2 Segment 3X
Segments are created and removed as needed Processor
Segments are created and removed as needed “GOOG” Processor “GOOG”
Segments are created and removed as needed “GOOG” Processor “GOOG”
Segments are created and removed as needed “GOOG” Processor GOOG AAPL “AAPL”
Segments are created and removed as needed “GOOG” Processor GOOGX AAPL AMZN “AAPL” “AMZN”