From 99488133dad8e8b6311c6719b8ee7688b0f1b7a6 Mon Sep 17 00:00:00 2001 From: sotech117 Date: Mon, 25 Sep 2023 23:07:20 -0400 Subject: Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c842e6..d6b7c33 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Running the 3 executables without arguments will tell you the necessary argument I did not implement origonal design doc, due to random malloc errors with the autograder. I rewrote the server, with the the design... * A "select_thread" controls accepting new clients and responding to commands from clients. It redirects the logic to separate helper functions to send replies. -* The station information is held by an array. Each station has a thread that broadcasts to the listeners every half-second (at half the rate per second). During the downtime of this half-second, the station file is read into a buffer and threads are created off of this buffer, waiting to be released. At the top of the second, the station thread then bradcasts a `cond` variable to start all threads that send the station. +* The station information is held by an array. Each station has a thread that broadcasts to the listeners every half-second (at half the rate per second). At the bottom of this half-second, the station file is read into a buffer and threads are created off of this buffer, waiting to be released. At the top of this half-second, the station thread then bradcasts a `cond` variable to start all threads that send the station. * The `users` pointer containing the user data (along with the separate stations pointer) has a mutex `users_mutex` that allows safe-thread write and deletion. This pointer is also dynamic, using realloc when more memory is needed. There are a few memory optimizations implemented (see `init_user(...)`). * The code is well documented, so many smaller design choices can be read there :) -- cgit v1.2.3-70-g09d2