... continued
Explore how to implement the token bucket filter using background threads and condition variables in Python. Understand synchronization techniques to manage shared state and learn how to encapsulate thread management with a factory design pattern.
We'll cover the following...
Using a Background Thread
The previous solution consisted of manipulating pointers in time, thus avoiding threads altogether. Another solution is to use threads to solve the token bucket filter problem. We instantiate one thread to add a token to the bucket after every one second. The user thread invokes the getToken() method and is granted one if available. We instantiate one thread to add a token to the bucket after every one second. The user thread invokes the getToken() method and is granted one if available.
One simplification as a result of using threads is we now only need to remember the current number of tokens held by the token bucket filter object. We'll add an additional method daemonThread() that will be executed by the thread that adds a token every second to the bucket. The skeleton of our class looks ...