SlideShare a Scribd company logo
MULTIPLEMULTIPLEMULTIPLEMU
THREADSTHREADSTHREADSTHR
MULTIPLE
THREADS
EVENT STREAM PROCESSING
with
Sylvain Hallé
Raphael Khoury
Sébastien Gaboury
Université du Québec a Chicoutimi
The Problem
input event stream
The Problem
P
computation
input event stream
The Problem
output event stream
P
computation
input event stream
The Problem
Find
ways to split P into parts that
can be processed in parallel
1
output event stream
P
computation
input event stream
The Problem
genericFind
ways to split P into parts that
can be processed in parallel
1
output event stream
P
computation
input event stream
The Problem
Input events arrive
one by one2
genericFind
ways to split P into parts that
can be processed in parallel
1
output event stream
P
computation
input event stream
The Problem
Input events arrive
one by one2
generic
Output events are
produced one by one3
Find
ways to split P into parts that
can be processed in parallel
1
output event stream
P
computation
input event stream
The Problem
The Problem
Single-
threaded
The Problem
Single-
threaded
Multi-
threaded
The Problem
The System
The System
Based on the
composition (piping)
of simple computing
units called
processors
The System
The System
→
Fork f = new Fork(2);
The System
→
→
→
→
Fork f = new Fork(2);
FunctionProcessor sum =
new FunctionProcessor( );
f
The System
→
→
→
+
→
Fork f = new Fork(2);
FunctionProcessor sum =
new FunctionProcessor(Addition instance);
f
The System
→
→
→
+
→
Fork f = new Fork(2);
FunctionProcessor sum =
new FunctionProcessor(Addition.instance);
CountDecimate decimate = new CountDecimate(n);
f
n
The System
→
→
→
+
→
→
Fork f = new Fork(2);
FunctionProcessor sum =
new FunctionProcessor(Addition.instance);
CountDecimate decimate = new CountDecimate(n);
Connector.connect(fork, LEFT, sum, LEFT)
f
n
The System
→
→
→
+
→
→
→
Fork f = new Fork(2);
FunctionProcessor sum =
new FunctionProcessor(Addition.instance);
CountDecimate decimate = new CountDecimate(n);
Connector.connect(fork, LEFT, sum, LEFT)
. connect(fork, RIGHT, decimate, INPUT)
f
n
The System
→
→
→
+
→
→
→
Fork f = new Fork(2);
FunctionProcessor sum =
new FunctionProcessor(Addition.instance);
CountDecimate decimate = new CountDecimate(n);
Connector.connect(fork, LEFT, sum, LEFT)
. connect(fork, RIGHT, decimate, INPUT)
. connect(decimate, OUTPUT, sum, RIGHT);
f
n
The System
→
→
→
+
→
→
→
Fork f = new Fork(2);
FunctionProcessor sum =
new FunctionProcessor(Addition.instance);
CountDecimate decimate = new CountDecimate(n);
Connector.connect(fork, LEFT, sum, LEFT)
. connect(fork, RIGHT, decimate, INPUT)
. connect(decimate, OUTPUT, sum, RIGHT);
Pullable p = sum.getOutputPullable(OUTPUT);
while (p.hasNext() != NextStatus.NO) {
Object o = p.next();
. ..
}
f
n
The System
The System
Function
Applies a function to
every input event
Cumulative
Computes the
progressive "sum" of
all input events
Trim
Removes the first n
input events
Decimate
Outputs every
n-th event
Group
Encloses a group of
connected processors
Fork
Duplicates a stream
into multiple copies
Slice
Splits a stram into multiple
sub-streams
Window
Applies a function to
a sliding window of
n events
f
Σ.f
n
Filter
A first, Boolean stream, decides if each
event of a second stream should be output
{
f
The System
X
G F
U
1
<
Σ f
⊥
<
Σ f
⊥
F
G
=
= =
= Σ f
?
♣
LTL PALETTE
Existing processors should be changed !
4
not
P P PPP
P PPP
The Problem
Existing processors should be changed !
4
not
P P PPP
P PPP
Enclose them within new,
processors
Solution:
thread-aware
P
The Problem
Thread Manager
Responsible for a pool
of N threads
M
Runnable r = ...
ManagedThread t = m.tryNewThread(r);
if (t != null) t.start();
else r.run();
Returns a new thread that can be started, or null if
all N threads are busy
If t is null, the desired processing must be done
in the current thread
Thread Manager
Responsible for a pool
of N threads
M
ψφ
ψ.pull
Sequential Pulling
TIME
ψφ
ψ.pull
Sequential Pulling
TIME
ψ
φ.pull
φ
ψ.pull
Sequential Pulling
TIME
ψ
φ.pull
φ
ψ.pull
Sequential Pulling
TIME
ψ
φ.pull
φ
e1
ψ.pull
Sequential Pulling
TIME
ψ
φ.pull
φ
e1
ψ.pull
Sequential Pulling
TIME
ψ
φ.pull
φ
e1
ψ.pull
Sequential Pulling
TIME
ψ
φ.pull
φ
e1
φ.pull
ψ.pull
ψ.pull
Sequential Pulling
TIME
ψ
φ.pull
φ
e1
φ.pull
ψ.pull
ψ.pull
Sequential Pulling
TIME
ψ
φ.pull
φ
e1
e2
φ.pull
ψ.pull
ψ.pull
Sequential Pulling
TIME
ψ
φ.pull
φ
e1
e2
φ.pull
ψ.pull
ψ.pull
Sequential Pulling
TIME
ψ
φ.pull
φ
e1
e2
φ.pull
ψ.pull
ψ.pull
Sequential Pulling
TIME
ψφ W
Pre-emptive Pulling
TIME
ψ
φ.pull
φ W
Pre-emptive Pulling
TIME
ψ
φ.pull
φ W
W.pull ψ.pull
Pre-emptive Pulling
TIME
ψ
φ.pull
φ W
W.pull ψ.pull
Pre-emptive Pulling
TIME
ψ
φ.pull
φ W
φ.pull
e1
e2
W.pull
e1
ψ.pull
Pre-emptive Pulling
TIME
ψ
φ.pull
φ W
φ.pull
e1
e2
φ.pull
W.pull
e1
ψ.pull
Pre-emptive Pulling
TIME
ψ
φ.pull
φ W
φ.pull
e1
e2
φ.pull
W.pull
e1
W.pull
e2
ψ.pull
ψ.pull
Pre-emptive Pulling
TIME
ψ
φ.pull
φ W
φ.pull
e1
e2
φ.pull
e3
W.pull
e1
W.pull
e2
ψ.pull
ψ.pull
Pre-emptive Pulling
TIME
ψ
φ.pull
φ W
φ.pull
e1
e2
φ.pull
e3
W.pull
e1
W.pull
e2
ψ.pull
ψ.pull
Pre-emptive Pulling
TIME
ψ
φ.pull
φ W
φ.pull
e1
e2
φ.pull
e3
W.pull
e1
W.pull
e2
W.pull
e3
ψ.pull
ψ.pull
ψ.pull
Pre-emptive Pulling
TIME
ψ
φ.pull
φ W
φ.pull
e1
e2
φ.pull
e3
W.pull
e1
W.pull
e2
W.pull
e3
ψ.pull
ψ.pull
ψ.pull
Pre-emptive Pulling
TIME
ψφ
S
Pull Pipeline
TIME
ψ
φ.pull
φ
S
Pull Pipeline
TIME
ψ
push(e1)
φ.pull
φ1
φe1
S
e'1
Pull Pipeline
TIME
ψ
push(e1)
φ.pull
φ2φ1
φe1
e2
S
push(e2)
e'1
e'2
Pull Pipeline
TIME
ψ
push(e1)
φ.pull
φ2φ1
φe1
e2
e3
S
push(e2)
e'1
e'2
φ2
push(e3)
e'3
Pull Pipeline
TIME
ψ
push(e1)
φ.pull
φ2φ1
φe1
e2
e3
S
push(e2)
e'1
e'2
φ2
push(e3)
e'3
Pull Pipeline
TIME
ψ
push(e1)
φ.pull
φ2φ1
φe1
e2
e3
S
push(e2)
e'1
e'1
e'2
φ2
push(e3)
e'3
Pull Pipeline
TIME
ψ
push(e1)
φ.pull
φ2φ1
φe1
e2
e3
S
push(e2)
e'1
e'1
e'2
φ2
push(e3)
e'3
Pull Pipeline
TIME
ψ
push(e1)
φ.pull
φ2φ1
φe1
e2
e3
S
φ.pull
push(e2)
e'1
e'1
e'2
φ2
push(e3)
e'3
Pull Pipeline
TIME
ψ
push(e1)
φ.pull
φ2φ1
φe1
e2
e3
S
φ.pull
push(e2)
e'1
e'1
e'2
φ2
push(e3)
e'3
Pull Pipeline
TIME
ψ
push(e1)
φ.pull
φ2φ1
φe1
e2
e3
S
φ.pull
push(e2)
e'1
e'1
e'2
e'2
φ2
push(e3)
e'3
Pull Pipeline
TIME
ψ
push(e1)
φ.pull
φ2φ1
φe1
e2
e3
S
φ.pull
push(e2)
e'1
e'1
e'2
e'2
φ2
push(e3)
e'3
e'3
φ.pull
Pull Pipeline
TIME
Window ψ
Blocking Push
TIME
Window ψ
push(e)
Blocking Push
TIME
Window ψ
push(e)
φ1.push(e)
Blocking Push
TIME
Window ψ
push(e)
φ1.push(e)
φ2.push(e)
Blocking Push
TIME
Window ψ
push(e)
φ1.push(e)
φn-1.push(e)
. . .
φ2.push(e)
Blocking Push
TIME
Window ψ
push(e)
φ1.push(e)
φn-1.push(e)
. . .
collect e'
shift
copy
φ2.push(e)
Blocking Push
TIME
Window ψ
push(e)
φ1.push(e)
φn-1.push(e)
. . .
collect e'
shift
copy
push(e')
φ2.push(e)
Blocking Push
TIME
Window ψ
push(e)
φ1.push(e)
φn-1.push(e)
. . .
collect e'
shift
copy
push(e')
φ2.push(e)
Event e is pushed to the n copies
of φ sequentially. Each call to
push is blocking.
Blocking Push
TIME
Window ψ
Non-blocking Push
TIME
Window ψ
push(e)
Non-blocking Push
TIME
Window ψ
push(e) φ0.push(e)
φ0
Non-blocking Push
TIME
Window ψ
push(e) φ0.push(e) φ1.push(e)
φ0 φ1
Non-blocking Push
TIME
Window ψ
push(e) φ0.push(e)
φn-1.push(e)
φ1.push(e)
φ0 φ1 φn-1. . .
Non-blocking Push
TIME
Window ψ
push(e) φ0.push(e)
φn-1.push(e)
φ1.push(e)
φ0
φ0.waitFor
φ1 φn-1. . .
Non-blocking Push
TIME
Window ψ
push(e) φ0.push(e)
φn-1.push(e)
φ1.push(e)
φ0
φ0.waitFor
φn-1.waitFor
φ1 φn-1. . .
Non-blocking Push
TIME
Window ψ
push(e) φ0.push(e)
φn-1.push(e)
collect e'
shift
copy
φ1.push(e)
φ0
φ0.waitFor
φn-1.waitFor
φ1 φn-1. . .
Non-blocking Push
TIME
Window ψ
push(e) φ0.push(e)
φn-1.push(e)
collect e'
shift
copy push(e')
φ1.push(e)
φ0
φ0.waitFor
φn-1.waitFor
φ1 φn-1. . .
Non-blocking Push
TIME
Window ψ
push(e) φ0.push(e)
φn-1.push(e)
collect e'
shift
copy push(e')
φ1.push(e)
φ0
φ0.waitFor
φn-1.waitFor
φ1 φn-1. . .
Calls to push are non-blocking;
each runs in a separate thread.
Non-blocking Push
TIME
3 new thread-aware processors
Non-blocking
push
Pull
pipeline
Pre-emptive
pull
Implemented in a separate
independent from the rest of the code
palette
→
→
NP →
PP →
PE
Multi-threading in a Query
→
→
{
f
→
→
+
Σ.f
10
FunctionProcessor sum = new FunctionProcessor(
new CumulativeFunction(Addition.instance));
WindowProcessor win = new WindowProcessor(sum, 10);
ThreadManager m = new ThreadManager(4);
FunctionProcessor sum = new FunctionProcessor(
new CumulativeFunction(Addition.instance));
NonBlockingProcessor nbp =
new NonBlockingProcessor(sum, m);
WindowProcessor win = new WindowProcessor(nbp, 10);
→
→
{
f 10
Multi-threading in a Query
M→
→ →
→
+
Σ.f
4
Experimental Results
Auction bidding
Candidate selection
Endless bashing
Spontaneous Pingu creation
Turn around
1.07
4.44
1.45
1.05
1.86
Benchmark (CRV 2016) Speedup
A single thread-aware processor inserted in the query
Experimental Results
Turn around
→
A
/a/b
//character[status=Walker]/id/text()
→ p1
→
A
→ p2
→ →
→
→
/a/b
//character[status=Blocker]/id/text()
→
→
→
3
→
→
→
<?
→
→
→→
→
→
→
→
f1
f2
→
→ →
→
→
→
→
M4
Multi-threaded
Experimental Results
Turn around
→
A
/a/b
//character[status=Walker]/id/text()
→ p1
→
A
→ p2
→ →
→
→
/a/b
//character[status=Blocker]/id/text()
→
→
→
3
→
→
→
<?
→
→
→→
→
→
→
→
f1
f2
→
→ →
→
→
→
→
Take-home Points
Multi-threading capabilities added to BeepBeep 3
Existing processors do not need to be aware of the
presence of threads
Minimally intrusive: less than 5 lines to add multi-
threading to part of a query
5% - 400% speedup on a small sample of queries
Requires manual tuning and intuition
Not all queries can gain from parallelism!
https://liflab.github.io/beepbeep-3
THE
END
THE
END ...but for how long ?
https://www.researchgate.net/publication/318337325

More Related Content

What's hot (20)

PDF
Ownership System in Rust
Chih-Hsuan Kuo
 
PDF
Mc Squared
sganga
 
PDF
Protocol handler in Gecko
Chih-Hsuan Kuo
 
PPTX
Grand Central Dispatch in Objective-C
Pavel Albitsky
 
PPTX
Process management
Utkarsh Kulshrestha
 
PDF
Libraries
Marieswaran Ramasamy
 
PPT
Microkernel Development
Rodrigo Almeida
 
PDF
Metaprogramming and Reflection in Common Lisp
Damien Cassou
 
PDF
Goroutines and Channels in practice
Guilherme Garnier
 
PPT
Stacks
Ashish Sethi
 
PDF
How to recover malare assembly codes
FACE
 
PDF
Rust concurrency tutorial 2015 12-02
nikomatsakis
 
PPTX
Fourier project presentation
志璿 楊
 
PDF
An introduction to functional programming with go
Eleanor McHugh
 
PDF
Golang Channels
Joris Bonnefoy
 
PPTX
Introduction to Deep Learning, Keras, and Tensorflow
Oswald Campesato
 
PDF
A Playful Introduction to Rx
Andrey Cheptsov
 
PPTX
Introduction to TensorFlow 2
Oswald Campesato
 
Ownership System in Rust
Chih-Hsuan Kuo
 
Mc Squared
sganga
 
Protocol handler in Gecko
Chih-Hsuan Kuo
 
Grand Central Dispatch in Objective-C
Pavel Albitsky
 
Process management
Utkarsh Kulshrestha
 
Microkernel Development
Rodrigo Almeida
 
Metaprogramming and Reflection in Common Lisp
Damien Cassou
 
Goroutines and Channels in practice
Guilherme Garnier
 
Stacks
Ashish Sethi
 
How to recover malare assembly codes
FACE
 
Rust concurrency tutorial 2015 12-02
nikomatsakis
 
Fourier project presentation
志璿 楊
 
An introduction to functional programming with go
Eleanor McHugh
 
Golang Channels
Joris Bonnefoy
 
Introduction to Deep Learning, Keras, and Tensorflow
Oswald Campesato
 
A Playful Introduction to Rx
Andrey Cheptsov
 
Introduction to TensorFlow 2
Oswald Campesato
 

Similar to Event Stream Processing with Multiple Threads (20)

ODP
Concurrent Programming in Java
Ruben Inoto Soto
 
PPT
cs2110Concurrency1.ppt
narendra551069
 
PDF
A Survey of Concurrency Constructs
Ted Leung
 
PDF
Peyton jones-2011-parallel haskell-the_future
Takayuki Muranushi
 
PDF
Simon Peyton Jones: Managing parallelism
Skills Matter
 
PPTX
Concurrency Constructs Overview
stasimus
 
PDF
Java concurrency
Abhijit Gaikwad
 
PDF
Communicating State Machines
srirammalhar
 
ODP
Pick up the low-hanging concurrency fruit
Vaclav Pech
 
PPTX
Seminar on Parallel and Concurrent Programming
Stefan Marr
 
PDF
[Greach 17] make concurrency groovy again
Alonso Torres
 
PDF
Mining event streams with BeepBeep 3
Sylvain Hallé
 
PDF
Groovy concurrency
Alex Miller
 
PPT
Google: Cluster computing and MapReduce: Introduction to Distributed System D...
tugrulh
 
PPTX
OS Module-2.pptx
bleh23
 
PPTX
17. thread and deadlock
Vahid Heidari
 
DOCX
Paper Analysis Essay The 5-page Paper You Submit Must At L.docx
mosyrettcc
 
DOCX
Paper Analysis Essay The 5-page Paper You Submit Must At L.docx
aman341480
 
PDF
Concurrency
Isaac Liao
 
PPTX
Concurrency in Java
Allan Huang
 
Concurrent Programming in Java
Ruben Inoto Soto
 
cs2110Concurrency1.ppt
narendra551069
 
A Survey of Concurrency Constructs
Ted Leung
 
Peyton jones-2011-parallel haskell-the_future
Takayuki Muranushi
 
Simon Peyton Jones: Managing parallelism
Skills Matter
 
Concurrency Constructs Overview
stasimus
 
Java concurrency
Abhijit Gaikwad
 
Communicating State Machines
srirammalhar
 
Pick up the low-hanging concurrency fruit
Vaclav Pech
 
Seminar on Parallel and Concurrent Programming
Stefan Marr
 
[Greach 17] make concurrency groovy again
Alonso Torres
 
Mining event streams with BeepBeep 3
Sylvain Hallé
 
Groovy concurrency
Alex Miller
 
Google: Cluster computing and MapReduce: Introduction to Distributed System D...
tugrulh
 
OS Module-2.pptx
bleh23
 
17. thread and deadlock
Vahid Heidari
 
Paper Analysis Essay The 5-page Paper You Submit Must At L.docx
mosyrettcc
 
Paper Analysis Essay The 5-page Paper You Submit Must At L.docx
aman341480
 
Concurrency
Isaac Liao
 
Concurrency in Java
Allan Huang
 
Ad

More from Sylvain Hallé (20)

PDF
A Tree-Based Definition of Business Process Conformance (Talk @ EDOC 2024)
Sylvain Hallé
 
PDF
Monitoring Business Process Compliance Across Multiple Executions with Stream...
Sylvain Hallé
 
PDF
A Stream-Based Approach to Intrusion Detection
Sylvain Hallé
 
PDF
Event Stream Processing with BeepBeep 3
Sylvain Hallé
 
PDF
Smart Contracts-Enabled Simulation for Hyperconnected Logistics
Sylvain Hallé
 
PDF
Test Suite Generation for Boolean Conditions with Equivalence Class Partitioning
Sylvain Hallé
 
PDF
Synthia: a Generic and Flexible Data Structure Generator (Long Version)
Sylvain Hallé
 
PDF
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
Sylvain Hallé
 
PDF
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
Sylvain Hallé
 
PDF
A Generic Explainability Framework for Function Circuits
Sylvain Hallé
 
PDF
Detecting Responsive Web Design Bugs with Declarative Specifications
Sylvain Hallé
 
PDF
Streamlining the Inclusion of Computer Experiments in Research Papers
Sylvain Hallé
 
PDF
Writing Domain-Specific Languages for BeepBeep
Sylvain Hallé
 
PDF
Real-Time Data Mining for Event Streams
Sylvain Hallé
 
PDF
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Sylvain Hallé
 
PDF
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
Sylvain Hallé
 
PDF
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
Sylvain Hallé
 
PDF
A Few Things We Heard About RV Tools (Position Paper)
Sylvain Hallé
 
PDF
Solving Equations on Words with Morphisms and Antimorphisms
Sylvain Hallé
 
PDF
Runtime monitoring de propriétés temporelles par (streaming) XML
Sylvain Hallé
 
A Tree-Based Definition of Business Process Conformance (Talk @ EDOC 2024)
Sylvain Hallé
 
Monitoring Business Process Compliance Across Multiple Executions with Stream...
Sylvain Hallé
 
A Stream-Based Approach to Intrusion Detection
Sylvain Hallé
 
Event Stream Processing with BeepBeep 3
Sylvain Hallé
 
Smart Contracts-Enabled Simulation for Hyperconnected Logistics
Sylvain Hallé
 
Test Suite Generation for Boolean Conditions with Equivalence Class Partitioning
Sylvain Hallé
 
Synthia: a Generic and Flexible Data Structure Generator (Long Version)
Sylvain Hallé
 
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
Sylvain Hallé
 
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
Sylvain Hallé
 
A Generic Explainability Framework for Function Circuits
Sylvain Hallé
 
Detecting Responsive Web Design Bugs with Declarative Specifications
Sylvain Hallé
 
Streamlining the Inclusion of Computer Experiments in Research Papers
Sylvain Hallé
 
Writing Domain-Specific Languages for BeepBeep
Sylvain Hallé
 
Real-Time Data Mining for Event Streams
Sylvain Hallé
 
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Sylvain Hallé
 
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
Sylvain Hallé
 
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
Sylvain Hallé
 
A Few Things We Heard About RV Tools (Position Paper)
Sylvain Hallé
 
Solving Equations on Words with Morphisms and Antimorphisms
Sylvain Hallé
 
Runtime monitoring de propriétés temporelles par (streaming) XML
Sylvain Hallé
 
Ad

Recently uploaded (20)

PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 

Event Stream Processing with Multiple Threads