From b43f2849900bb0afde755c92214c2715708dd1d1 Mon Sep 17 00:00:00 2001
From: keleher <keleher@cs.umd.edu>
Date: Sun, 24 Nov 2019 17:39:27 -0500
Subject: [PATCH] auto

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 4992f63..64f3fd7 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,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:
-- Each transaction for us will be started in a sepearate thread (see `testing.py` for some examples). The main command for doing so is: `threading.Thread`, which takes a function name as an argument.
+- 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.
 - Using `with` simplifies this: a Lock/RLock/Condition/Event is passed as an argument, and only one thread can be in the body of the `with`.
-- 
GitLab