Sorry if I am asking same question again but want to verify!
I have two processes P1 and P2.
P1 is a writer (Producer).
P2 is a reader (Consumer).
There is some shared memory or a file that P1 writes to and as soon as P1 writes, P2 should be notified for reading.
Now as per my understanding pseudocode for P1 should be
Open shared file Create a named event("Writedone") to signal write for P2 process Do some processing on file Mutex.Lock() Write to File Mutex.Unlock() Signal named Event. CloseHandle on file
Now in P2
Open handle to Shared file Open handle to named event WaitForSingleEvent on named event("Writedone") Read from file CloseHandle on file
Questions:
- Is it required to have locks in the reader? The reader will just read the file and not change it. So I guess no locks are required in the reader. Thoughts? Can it go wrong in some case without locks?
- I am opening and closing handles to the file every time during reading and writing. I think that is not required. I can open the file handle in the constructor and close it in the destructor of reader and writer. But can I read from the file when it is being used in writing?
EDIT: Everytime writer is writing 10 bytes at the end of File and reader is supposed to read the latest 10 bytes written by writer.