I was reading up on multithreading and I came across things like Mutexes, Locks, Starvation and it's quite interesting. Here I'm using CRITICAL_SECTION in my code to prevent data corruption and so forth. I could have used Mutexex, Events, Semaphores, etc... I managed to read and add the contents of a 5MB text file in about 5.9 seconds with 7 threads. This is a big improvement since I had a program before that took a whole 10 seconds to read and add the contents of a 1MB file to a vector. This one uses maps and counts each word's/phrase occurrences. The speed is highly dependent on the placement of the critical sections. I shaved off about 4 seconds just by moving the EnterCriticalSection down one line!!

I'm looking for other ways to optimize the CRITICAL_SECTIONS though. I want to get this down to at least 3 seconds if possible. xD