diff --git a/README.md b/README.md index 9aca764aa953cb768633904ab0e9d5d18b9d5652..dd80f7b678def4c84884397a75aa49e0af0af9f6 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ The database system is written in Python and attempts to simulate how a database #### Synchronization in Python Although you won't need to do any synchronization-related coding, it would be necessary for you to understand the basic Python synchronization primitives. The manual -explain this quite well: [https://docs.python.org/2/library/threading.html](High-level Threading Interface in Python). Some basics: +explains this quite well: [https://docs.python.org/3/library/threading.html](High-level Threading Interface in Python). Some basics: - Each transaction for us will be started in a sepearate thread (see `testingLock.py` for some examples). The main command for doing so is: `threading.Thread`, which takes a function name as an argument. - The main synchronization primitives are: `Lock` and `RLock` (Sections 16.2.2 and 16.2.3 in the manual above). You create them by calling `threading.Lock()` or `threading.RLock()`, and you use them by acquiring and releasing them. Only one thread can take a Lock or a RLock at any time. - Two other primitives build on top of the above: `Conditions` and `Events`. See the manual for the details on those. We use `Conditions` in `transactions.py` to signal threads.