What is a critical section and how is it implemented?
Answers were Sorted based on User's Feedback
Critical Section:-
In concurrent programming a critical section is a piece of
code that accesses a shared resource (data structure or
device) that must not be concurrently accessed by more than
one thread of execution. A critical section will usually
terminate in fixed time, and a thread, task or process will
only have to wait a fixed time to enter it. Some
synchronization mechanism is required at the entry and exit
of the critical section to ensure exclusive use.
for example a printer, can only be accessed by one process
at a time.
Example Code For Critical Sections with Win32 API: -
#include <windows.h>
CRITICAL_SECTION cs; /* This is the critical section
object -- once initialized, it cannot
be moved in memory */
/* Initialize the critical section -- This must be done
before locking */
InitializeCriticalSection(&cs);
/* Enter the critical section -- other threads are locked
out */
EnterCriticalSection(&cs);
/* Do some thread-safe processing! */
/* Leave the critical section -- other threads can now
EnterCriticalSection() */
LeaveCriticalSection(&cs);
/* Release system object when all finished -- usually at
the end of the cleanup code */
DeleteCriticalSection(&cs);
Is This Answer Correct ? | 10 Yes | 2 No |
Answer / umesh
Critical Section allows you to explicitly lock any resources so that untill u release the lock no body else can able to access it. Resource can be any thing. for example a variable, or a piece of code..
We can use Either CRITICAL_SECTION structure with the help of EnterCriticalSection and LeaveCriticalSection APIs.
Or MFC wrapper, CCriticalSection type variable. which gives u lock and unlock mechanism
Is This Answer Correct ? | 2 Yes | 2 No |
What is LoadLibrary function returns?
How to find the mouse entering an image?..while entering need to display next image...
What is the size of class
1)How to change a text of a button in runtime?
What is thread & process?
What are the advantages of using Doc/View or SDI over DialogBox
how u can move CDC pointer to one line in cview?
What is the use of CObject::Dump function ?
What is the use of OninitDialog ?
I have 2 threads. One thread prints odd numbers and the second thread prints even numbers. Now, I have to execute the threads alternatively so that i can output 1,2,3,4,5,6,..... write code for this?
What is socket?
What is the difference between Synchronous sockets and asynchronous sockets?