SlideShare a Scribd company logo
1 of 51
@gfraiteur
a deep investigation on how .NET multithreading primitives
map to hardware and Windows Kernel
You Thought
You Understood Multithreading
Gaël Fraiteur
PostSharp Technologies
Founder & Principal Engineer
@gfraiteur
Hello!
My name is GAEL.
No, I don’t think
my accent is funny.
my twitter
@gfraiteur
Agenda
1. Hardware
2. Windows Kernel
3. Application
@gfraiteur
Microarchitecture
Hardware
@gfraiteurThere was no RAM in Colossus, the world’s first electronic programmable computing device (19
http://en.wikipedia.org/wiki/File:Colossus.jpg
@gfraiteur
Hardware
Processor microarchitecture
Intel Core i7 980x
@gfraiteur
Hardware
Hardware latency
26.2
8.58
3
1.2
0.3
0 5 10 15 20 25 30
DRAM
L3 Cache
L2 Cache
L1 Cache
CPU Cycle
ns
Latency
Measured on Intel® Core™ i7-970 Processor (12M Cache, 3.20 GHz, 4.80 GT/s Intel® QPI) with SiSoftware Sandra
@gfraiteur
Hardware
Cache Hierarchy
• Distributed into caches
• L1 (per core)
• L2 (per core)
• L3 (per die)
Die 1
Core 4
Processor
Core 5
Processor
Core 7
Processor
L2 Cache
Core 6
Processor
L2 Cache
Memory Store
(DRAM)
Die 0
Core 1
Processor
Core 0
Processor
Core 2
Processor
L2 Cache
Core 3
Processor
L2 Cache
L2 Cache
L3 Cache
L2 CacheL2 Cache
L3 Cache
L2 Cache
Data Transfer
Core
Interconnec
t
Core
Interconnec
t
Processor Interconnect
Synchronization
• Synchronized through an
asynchronous “bus”:
• Request/response
• Message queues
• Buffers
@gfraiteur
Hardware
Memory Ordering
• Issues due to implementation details:
• Asynchronous bus
• Caching & Buffering
• Out-of-order execution
@gfraiteur
Hardware
Memory Ordering
Processor 0 Processor 1
Store A := 1 Load A
Store B := 1 Load B
Possible values of (A, B) for loads?
Processor 0 Processor 1
Load A Load B
Store B := 1 Store A := 1
Possible values of (A, B) for loads?
Processor 0 Processor 1
Store A := 1 Store B := 1
Load B Load A
Possible values of (A, B) for loads?
@gfraiteur
Hardware
Memory Models: Guarantees
Type
Alpha
ARMv7
PA-RISC
POWER
SPARC
RMO
SPARC
PSO
SPARCTSO
x86
x86
oostore
AMD64
IA64
zSeries
Loads reordered after Loads Y Y Y Y Y Y Y
Loads reordered after Stores Y Y Y Y Y Y Y
Stores reordered after Stores Y Y Y Y Y Y Y Y
Stores reordered after Loads Y Y Y Y Y Y Y Y Y Y Y Y
Atomic reordered with Loads Y Y Y Y Y
Atomic reordered with
Stores
Y Y Y Y Y Y
Dependent Loads reordered Y
Incoherent Instruction cache
pipeline
Y Y Y Y Y Y Y Y Y Y
http://en.wikipedia.org/wiki/Memory_ordering
X84,AMD64: strong orderingARM: weak ordering
@gfraiteur
Hardware
Memory Models Compared
Processor 0 Processor 1
Store A := 1 Load A
Store B := 1 Load B
Processor 0 Processor 1
LoadA Load B
Store B := 1 Store A := 1
@gfraiteur
Hardware
Compiler Memory Ordering
• The compiler (CLR) can:
• Cache (memory into register),
• Reorder
• Coalesce writes
• volatile keyword disables compiler optimizations.
And that’s all!
@gfraiteur
Hardware
Thread.MemoryBarrier()
Processor 0 Processor 1
Store A := 1 Store B := 1
Thread.MemoryBarrier() Thread.MemoryBarrier()
Load B Load A
Barriers serialize access to memory.
@gfraiteur
Hardware
Atomicity
Processor 0 Processor 1
Store A := (long) 0xFFFFFFFF Load A
• Up to native word size (IntPtr)
• Properly aligned fields (attention to struct fields!)
@gfraiteur
Hardware
Interlocked access
• The only locking mechanism at hardware level.
• System.Threading.Interlocked
• Add
Add(ref x, int a ) { x += a; return x; }
• Increment
Inc(ref x ) { x += 1; return x; }
• Exchange
Exc( ref x, int v ) { int t = x; x = a; return t; }
• CompareExchange
CAS( ref x, int v, int c ) { int t = x; if ( t == c ) x = a; return t; }
• Read(ref long)
• Implemented by L3 cache and/or interconnect messages.
• Implicit memory barrier
@gfraiteur
Hardware
Cost of interlocked
9.75
8.58
5.5
1.87
1.2
0 2 4 6 8 10 12
Interlocked increment (contended, same socket)
L3 Cache
Interlocked increment (non-contended)
Non-interlocked increment
L1 Cache
ns
Latency
Measured on Intel® Core™ i7-970 Processor (12M Cache, 3.20 GHz, 4.80 GT/s Intel® QPI)
with C# code. Cache latencies measured with SiSoftware Sandra.
@gfraiteur
Hardware
Cost of cache coherency
@gfraiteur
Multitasking
• No thread, no process at hardware level
• There no such thing as “wait”
• One core never does more than 1 “thing” at the same time
(except HyperThreading)
• Task-State Segment:
• CPU State
• Permissions (I/O, IRQ)
• Memory Mapping
• A task runs until interrupted by hardware or OS
@gfraiteur
Lab: Non-Blocking Algorithms
• Non-blocking stack (4.5 MT/s)
• Ring buffer (13.2 MT/s)
@gfraiteur
Windows Kernel
Operating System
@gfraiteur
SideKick (1988). http://en.wikipedia.org/wiki/SideKi
@gfraiteur
• Program
(Sequence of Instructions)
• CPU State
• Wait Dependencies
• (other things)
• Virtual Address Space
• Resources
• At least 1 thread
• (other things)
Processes and Threads
Process Thread
Windows Kernel
@gfraiteur
Windows Kernel
Processed and Threads
8 Logical Processors
(4 hyper-threaded cores)
2384 threads
155 processes
@gfraiteur
Windows Kernel
Dispatching threads to CPU
Executing
CPU 0
CPU 1
CPU 2
CPU 3
Thread H
Thread G
Thread I
Thread J
Mutex Semaphore
Event Timer
Thread A
Thread C
Thread B
Wait
Thread D
Thread E
Thread F
Ready
@gfraiteur
• Live in the kernel
• Sharable among
processes
• Expensive!
• Event
• Mutex
• Semaphore
• Timer
• Thread
Dispatcher Objects
(WaitHandle)
Kinds of dispatcher objects Characteristics
Windows Kernel
@gfraiteur
Windows Kernel
Cost of kernel dispatching
2
6
10
295
2,093
1 10 100 1000 10000
Normal increment
Non-contented interlocked increment
Contented interlocked increment
Access kernel dispatcher object
Create+dispose kernel dispatcher object
Duration (ns)
Measured on Intel® Core™ i7-970 Processor (12M Cache, 3.20 GHz, 4.80 GT/s Intel® QPI)
@gfraiteur
Windows Kernel
Wait Methods
• Thread.Sleep
• Thread.Yield
• Thread.Join
• WaitHandle.Wait
• (Thread.SpinWait)
@gfraiteur
Windows Kernel
SpinWait: smart busy loops
1. Thread.SpinWait (Hardware awareness, e.g. Intel HyperThreading)
2. Thread.Sleep(0) (give up to threads of same priority)
3. Thread.Yield() (give up to threads of any priority)
4. Thread.Sleep(1) (sleeps for 1 ms)
Processor 0 Processor 1
A = 1;
B = 1;
SpinWait w = new SpinWait();
int localB;
if ( A == 1 )
{
while ( ((localB = B) == 0 )
w.SpinOnce();
}
@gfraiteur
.NET Framework
Application Programming
@gfraiteur
Application Programming
Design Objectives
• Ease of use
• High performance
from applications!
@gfraiteur
Application Programming
Instruments from the platform
Hardware
• Interlocked
• SpinWait
• Volatile
Operating
System
• Thread
• WaitHandle
(mutex, event, semaphore, …)
• Timer
@gfraiteur
Application Programming
New Instruments
Concurrency &
Synchronization
•Monitor (Lock), SpinLock
•ReaderWriterLock
•Lazy, LazyInitializer
•Barrier, CountdownEvent
Data Structures
•BlockingCollection
•Concurrent(Queue|Stack|Bag|Dictionary)
•ThreadLocal,ThreadStatic
Thread Dispatching
•ThreadPool
•Dispatcher, ISynchronizeInvoke
•BackgroundWorker
Frameworks
•PLINQ
•Tasks
•Async/Await
@gfraiteur
Concurrency &
Synchronization
Application Programming
@gfraiteur
Concurrency & Synchronization
Monitor: the lock keyword
1. Start with interlocked operations (no contention)
2. Continue with “spin wait”.
3. Create kernel event and wait
 Good performance if low contention
@gfraiteur
Concurrency & Synchronization
ReaderWriterLock
• Concurrent reads allowed
• Writes require exclusive access
@gfraiteur
Concurrency & Synchronization
Lab: ReaderWriterLock
@gfraiteur
Data Structures
Application Programming
@gfraiteur
Data Structures
BlockingCollection
• Use case: pass messages between threads
• TryTake: wait for an item and take it
• Add: wait for free capacity (if limited) and add item to
queue
• CompleteAdding: no more item
@gfraiteur
Data Structures
Lab: BlockingCollection
@gfraiteur
Data Structures
ConcurrentStack
node top
Producer A
Producer B
Producer C
Consumer A
Consumer B
Consumer C
Consumers and producers
compete for the top of the stack
node
@gfraiteur
Data Structures
ConcurrentQueue
node node tail
Producer A
Producer B
Producer C
Consumer A
Consumer B
Consumer C
head
Consumers compete for the head.
Producers compete for the tail.
Both compete for the same node if the queue is empty.
@gfraiteur
Data Structures
ConcurrentBag
Thread A
Bag
Thread Local Storage A Thread Local Storage B
node node node node
Producer A Consumer A
Thread B
Producer B Consumer B
• Threads
preferentially
consume
nodes they
produced
themselves.
• No ordering
@gfraiteur
Data Structures
ConcurrentDictionary
• TryAdd
• TryUpdate (CompareExchange)
• TryRemove
• AddOrUpdate
• GetOrAdd
@gfraiteur
Thread Dispatching
Application Programming
@gfraiteur
Thread Dispatching
ThreadPool
• Problems solved:
• Execute a task asynchronously
(QueueUserWorkItem)
• Waiting for WaitHandle
(RegisterWaitForSingleObject)
• Creating a thread is expensive
• Good for I/O intensive operations
• Bad for CPU intensive operations
@gfraiteur
Thread Dispatching
Dispatcher
• Execute a task in the UI thread
• Synchronously: Dispatcher.Invoke
• Asynchonously: Dispatcher.BeginInvoke
• Under the hood, uses the HWND message loop
@gfraiteur
Thread Dispatching
@gfraiteur
Q&A
Gael Fraiteur
gael@postsharp.net
@gfraiteur
@gfraiteur
Summary
@gfraiteur
http://www.postsharp.net/
gael@postsharp.net

More Related Content

What's hot

Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017OpenEBS
 
Vulnerability desing patterns
Vulnerability desing patternsVulnerability desing patterns
Vulnerability desing patternsPeter Hlavaty
 
Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Charles Nutter
 
A tour on Spur for non-VM experts
A tour on Spur for non-VM expertsA tour on Spur for non-VM experts
A tour on Spur for non-VM expertsESUG
 
Practical Windows Kernel Exploitation
Practical Windows Kernel ExploitationPractical Windows Kernel Exploitation
Practical Windows Kernel ExploitationzeroSteiner
 
Bypassing patchguard on Windows 8.1 and Windows 10
Bypassing patchguard on Windows 8.1 and Windows 10Bypassing patchguard on Windows 8.1 and Windows 10
Bypassing patchguard on Windows 8.1 and Windows 10Honorary_BoT
 
Pycon11: Python threads: Dive into GIL!
Pycon11: Python threads: Dive into GIL!Pycon11: Python threads: Dive into GIL!
Pycon11: Python threads: Dive into GIL!Chetan Giridhar
 
Pitfalls and limits of dynamic malware analysis
Pitfalls and limits of dynamic malware analysisPitfalls and limits of dynamic malware analysis
Pitfalls and limits of dynamic malware analysisTamas K Lengyel
 
Fun With Dr Brown
Fun With Dr BrownFun With Dr Brown
Fun With Dr BrownzeroSteiner
 
JRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherJRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherCharles Nutter
 
TRICK2013 Results
TRICK2013 ResultsTRICK2013 Results
TRICK2013 Resultsmametter
 
Rust system programming language
Rust system programming languageRust system programming language
Rust system programming languagerobin_sy
 
Power of linked list
Power of linked listPower of linked list
Power of linked listPeter Hlavaty
 

What's hot (14)

Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
 
Vulnerability desing patterns
Vulnerability desing patternsVulnerability desing patterns
Vulnerability desing patterns
 
Reverse engineering with python
Reverse engineering with pythonReverse engineering with python
Reverse engineering with python
 
Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014
 
A tour on Spur for non-VM experts
A tour on Spur for non-VM expertsA tour on Spur for non-VM experts
A tour on Spur for non-VM experts
 
Practical Windows Kernel Exploitation
Practical Windows Kernel ExploitationPractical Windows Kernel Exploitation
Practical Windows Kernel Exploitation
 
Bypassing patchguard on Windows 8.1 and Windows 10
Bypassing patchguard on Windows 8.1 and Windows 10Bypassing patchguard on Windows 8.1 and Windows 10
Bypassing patchguard on Windows 8.1 and Windows 10
 
Pycon11: Python threads: Dive into GIL!
Pycon11: Python threads: Dive into GIL!Pycon11: Python threads: Dive into GIL!
Pycon11: Python threads: Dive into GIL!
 
Pitfalls and limits of dynamic malware analysis
Pitfalls and limits of dynamic malware analysisPitfalls and limits of dynamic malware analysis
Pitfalls and limits of dynamic malware analysis
 
Fun With Dr Brown
Fun With Dr BrownFun With Dr Brown
Fun With Dr Brown
 
JRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherJRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform Further
 
TRICK2013 Results
TRICK2013 ResultsTRICK2013 Results
TRICK2013 Results
 
Rust system programming language
Rust system programming languageRust system programming language
Rust system programming language
 
Power of linked list
Power of linked listPower of linked list
Power of linked list
 

Viewers also liked

Design and simulation of sayeh processor using verilog copy 1445752708332
Design and simulation of sayeh processor using verilog   copy 1445752708332Design and simulation of sayeh processor using verilog   copy 1445752708332
Design and simulation of sayeh processor using verilog copy 1445752708332akanksha sharma
 
Efficient logging in multithreaded C++ server
Efficient logging in multithreaded C++ serverEfficient logging in multithreaded C++ server
Efficient logging in multithreaded C++ serverShuo Chen
 
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller ChipDesign of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller ChipWaqas Tariq
 
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010Claire O'Keeffe
 
Trigate transistors and future processors
Trigate transistors and future processors Trigate transistors and future processors
Trigate transistors and future processors Chinmay Chepurwar
 
Analog Layout and Process Concern
Analog Layout and Process ConcernAnalog Layout and Process Concern
Analog Layout and Process Concernasinghsaroj
 
Ehud tzuri 3 d challanges new
Ehud tzuri 3 d challanges    newEhud tzuri 3 d challanges    new
Ehud tzuri 3 d challanges newchiportal
 
Vlsi design-manual
Vlsi design-manualVlsi design-manual
Vlsi design-manualAmbuj Jha
 
Full custom Ic design Implementation of low power priority encoder
Full custom Ic design Implementation of low power priority encoderFull custom Ic design Implementation of low power priority encoder
Full custom Ic design Implementation of low power priority encodersrikanth kalemla
 
Layout Design Comparison of CMOS and Gate
Layout Design Comparison of CMOS  and Gate Layout Design Comparison of CMOS  and Gate
Layout Design Comparison of CMOS and Gate IJEEE
 
Lab inv l
Lab inv lLab inv l
Lab inv lmkkalai
 
3D or Tri-gate transistors
3D or Tri-gate transistors3D or Tri-gate transistors
3D or Tri-gate transistorsKaranvir Singh
 

Viewers also liked (20)

Design and simulation of sayeh processor using verilog copy 1445752708332
Design and simulation of sayeh processor using verilog   copy 1445752708332Design and simulation of sayeh processor using verilog   copy 1445752708332
Design and simulation of sayeh processor using verilog copy 1445752708332
 
Efficient logging in multithreaded C++ server
Efficient logging in multithreaded C++ serverEfficient logging in multithreaded C++ server
Efficient logging in multithreaded C++ server
 
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller ChipDesign of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
Design of an Analog CMOS based Interval Type-2 Fuzzy Logic Controller Chip
 
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
IC Mask Design - IC Layout Acceleration Tool - DAC Conference, June 2010
 
Trigate transistors and future processors
Trigate transistors and future processors Trigate transistors and future processors
Trigate transistors and future processors
 
Aicd cmos layouts
Aicd cmos layoutsAicd cmos layouts
Aicd cmos layouts
 
Analog Layout and Process Concern
Analog Layout and Process ConcernAnalog Layout and Process Concern
Analog Layout and Process Concern
 
Ehud tzuri 3 d challanges new
Ehud tzuri 3 d challanges    newEhud tzuri 3 d challanges    new
Ehud tzuri 3 d challanges new
 
Vlsi design-manual
Vlsi design-manualVlsi design-manual
Vlsi design-manual
 
Full custom Ic design Implementation of low power priority encoder
Full custom Ic design Implementation of low power priority encoderFull custom Ic design Implementation of low power priority encoder
Full custom Ic design Implementation of low power priority encoder
 
Atm Simulator
Atm SimulatorAtm Simulator
Atm Simulator
 
Layout Design Comparison of CMOS and Gate
Layout Design Comparison of CMOS  and Gate Layout Design Comparison of CMOS  and Gate
Layout Design Comparison of CMOS and Gate
 
VLSi
VLSiVLSi
VLSi
 
Lab inv l
Lab inv lLab inv l
Lab inv l
 
tri gate transistors
tri gate transistorstri gate transistors
tri gate transistors
 
RISC AND CISC PROCESSOR
RISC AND CISC PROCESSORRISC AND CISC PROCESSOR
RISC AND CISC PROCESSOR
 
Risc processors
Risc processorsRisc processors
Risc processors
 
Layout rules
Layout rulesLayout rules
Layout rules
 
3D or Tri-gate transistors
3D or Tri-gate transistors3D or Tri-gate transistors
3D or Tri-gate transistors
 
VTU ECE 7th sem VLSI lab manual
VTU ECE 7th sem VLSI lab manualVTU ECE 7th sem VLSI lab manual
VTU ECE 7th sem VLSI lab manual
 

Similar to Multithreading Fundamentals

Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecksKernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecksAnne Nicolas
 
Blackhat USA 2016 - What's the DFIRence for ICS?
Blackhat USA 2016 - What's the DFIRence for ICS?Blackhat USA 2016 - What's the DFIRence for ICS?
Blackhat USA 2016 - What's the DFIRence for ICS?Chris Sistrunk
 
DConf2015 - Using D for Development of Large Scale Primary Storage
DConf2015 - Using D for Development  of Large Scale Primary StorageDConf2015 - Using D for Development  of Large Scale Primary Storage
DConf2015 - Using D for Development of Large Scale Primary StorageLiran Zvibel
 
LCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLinaro
 
Practical reverse engineering and exploit development for AVR-based Embedded ...
Practical reverse engineering and exploit development for AVR-based Embedded ...Practical reverse engineering and exploit development for AVR-based Embedded ...
Practical reverse engineering and exploit development for AVR-based Embedded ...Alexander Bolshev
 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceEnkitec
 
SCFE 2020 OpenCAPI presentation as part of OpenPWOER Tutorial
SCFE 2020 OpenCAPI presentation as part of OpenPWOER TutorialSCFE 2020 OpenCAPI presentation as part of OpenPWOER Tutorial
SCFE 2020 OpenCAPI presentation as part of OpenPWOER TutorialGanesan Narayanasamy
 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture PerformanceEnkitec
 
The power of linux advanced tracer [POUG18]
The power of linux advanced tracer [POUG18]The power of linux advanced tracer [POUG18]
The power of linux advanced tracer [POUG18]Mahmoud Hatem
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.jsorkaplan
 
Evented Ruby VS Node.js
Evented Ruby VS Node.jsEvented Ruby VS Node.js
Evented Ruby VS Node.jsNitin Gupta
 
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)Bobby Curtis
 
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1Adam Dunkels
 
Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)lauraxthomson
 
NIOS II Processor.ppt
NIOS II Processor.pptNIOS II Processor.ppt
NIOS II Processor.pptAtef46
 

Similar to Multithreading Fundamentals (20)

Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecksKernel Recipes 2015: Solving the Linux storage scalability bottlenecks
Kernel Recipes 2015: Solving the Linux storage scalability bottlenecks
 
Blackhat USA 2016 - What's the DFIRence for ICS?
Blackhat USA 2016 - What's the DFIRence for ICS?Blackhat USA 2016 - What's the DFIRence for ICS?
Blackhat USA 2016 - What's the DFIRence for ICS?
 
DConf2015 - Using D for Development of Large Scale Primary Storage
DConf2015 - Using D for Development  of Large Scale Primary StorageDConf2015 - Using D for Development  of Large Scale Primary Storage
DConf2015 - Using D for Development of Large Scale Primary Storage
 
LCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC session
 
Practical reverse engineering and exploit development for AVR-based Embedded ...
Practical reverse engineering and exploit development for AVR-based Embedded ...Practical reverse engineering and exploit development for AVR-based Embedded ...
Practical reverse engineering and exploit development for AVR-based Embedded ...
 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture Performance
 
HiPEAC-Keynote.pptx
HiPEAC-Keynote.pptxHiPEAC-Keynote.pptx
HiPEAC-Keynote.pptx
 
SCFE 2020 OpenCAPI presentation as part of OpenPWOER Tutorial
SCFE 2020 OpenCAPI presentation as part of OpenPWOER TutorialSCFE 2020 OpenCAPI presentation as part of OpenPWOER Tutorial
SCFE 2020 OpenCAPI presentation as part of OpenPWOER Tutorial
 
JavaScript Event Loop
JavaScript Event LoopJavaScript Event Loop
JavaScript Event Loop
 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture Performance
 
HotSpotコトハジメ
HotSpotコトハジメHotSpotコトハジメ
HotSpotコトハジメ
 
The power of linux advanced tracer [POUG18]
The power of linux advanced tracer [POUG18]The power of linux advanced tracer [POUG18]
The power of linux advanced tracer [POUG18]
 
Why Play Framework is fast
Why Play Framework is fastWhy Play Framework is fast
Why Play Framework is fast
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
Evented Ruby VS Node.js
Evented Ruby VS Node.jsEvented Ruby VS Node.js
Evented Ruby VS Node.js
 
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
 
Building a Router
Building a RouterBuilding a Router
Building a Router
 
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
 
Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)
 
NIOS II Processor.ppt
NIOS II Processor.pptNIOS II Processor.ppt
NIOS II Processor.ppt
 

More from PostSharp Technologies

Advanced Defensive Coding Techniques (with Introduction to Design by Contract)
Advanced Defensive Coding Techniques (with Introduction to Design by Contract)Advanced Defensive Coding Techniques (with Introduction to Design by Contract)
Advanced Defensive Coding Techniques (with Introduction to Design by Contract)PostSharp Technologies
 
Applying Object Composition to Build Rich Domain Models
Applying Object Composition to Build Rich Domain ModelsApplying Object Composition to Build Rich Domain Models
Applying Object Composition to Build Rich Domain ModelsPostSharp Technologies
 
Building Better Architecture with UX-Driven Design
Building Better Architecture with UX-Driven DesignBuilding Better Architecture with UX-Driven Design
Building Better Architecture with UX-Driven DesignPostSharp Technologies
 
Solving Localization Challenges with Design Pattern Automation
Solving Localization Challenges with Design Pattern AutomationSolving Localization Challenges with Design Pattern Automation
Solving Localization Challenges with Design Pattern AutomationPostSharp Technologies
 
Applying a Methodical Approach to Website Performance
Applying a Methodical Approach to Website PerformanceApplying a Methodical Approach to Website Performance
Applying a Methodical Approach to Website PerformancePostSharp Technologies
 
10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware ProgrammingPostSharp Technologies
 
Produce Cleaner Code with Aspect-Oriented Programming
Produce Cleaner Code with Aspect-Oriented ProgrammingProduce Cleaner Code with Aspect-Oriented Programming
Produce Cleaner Code with Aspect-Oriented ProgrammingPostSharp Technologies
 

More from PostSharp Technologies (9)

Advanced Defensive Coding Techniques (with Introduction to Design by Contract)
Advanced Defensive Coding Techniques (with Introduction to Design by Contract)Advanced Defensive Coding Techniques (with Introduction to Design by Contract)
Advanced Defensive Coding Techniques (with Introduction to Design by Contract)
 
Applying Object Composition to Build Rich Domain Models
Applying Object Composition to Build Rich Domain ModelsApplying Object Composition to Build Rich Domain Models
Applying Object Composition to Build Rich Domain Models
 
Performance is a Feature!
Performance is a Feature!Performance is a Feature!
Performance is a Feature!
 
Building Better Architecture with UX-Driven Design
Building Better Architecture with UX-Driven DesignBuilding Better Architecture with UX-Driven Design
Building Better Architecture with UX-Driven Design
 
Solving Localization Challenges with Design Pattern Automation
Solving Localization Challenges with Design Pattern AutomationSolving Localization Challenges with Design Pattern Automation
Solving Localization Challenges with Design Pattern Automation
 
Applying a Methodical Approach to Website Performance
Applying a Methodical Approach to Website PerformanceApplying a Methodical Approach to Website Performance
Applying a Methodical Approach to Website Performance
 
10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming
 
Design Pattern Automation
Design Pattern AutomationDesign Pattern Automation
Design Pattern Automation
 
Produce Cleaner Code with Aspect-Oriented Programming
Produce Cleaner Code with Aspect-Oriented ProgrammingProduce Cleaner Code with Aspect-Oriented Programming
Produce Cleaner Code with Aspect-Oriented Programming
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Multithreading Fundamentals