Just want a little clarity on the this.
Imagine I use the windows api of EnterCriticalSection. I call all of them with EnterCriticalSection(&criticalsection);
See this:
Consider a variable
int k
two threads are operating on k with this statement
k+=100;
Now assume k equals to 0. The first thread starts to read k, find k=0, then add k by 100. Then the second thread starts to read k before the 1st thread write k=100 back. Then the second thread will assume k=0 and add it by 100 and finally after two threads join k=100 not expected 200. This is the reason we set k+=100
a critical section.