7 Nokia Corporation - initial contribution. |
7 Nokia Corporation - initial contribution. |
8 Contributors: |
8 Contributors: |
9 --> |
9 --> |
10 <!DOCTYPE concept |
10 <!DOCTYPE concept |
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
12 <concept xml:lang="en" id="GUID-B1C0C5E2-DC8D-5230-8D4B-338DF619F1D2"><title>Critical Sections Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Synchronises exclusive access to shared resources within a single process. </p> </section> <section><title>Description</title> <p>Critical sections are typically used to serialize access to a section of re-entrant code that cannot be executed concurrently by more than one thread within a process. A critical section object only allows one thread into a controlled section, forcing other threads which attempt to gain access to that critical section to wait until the first thread has exited from that section.</p> <p>A critical section <i>cannot</i> be used to control access to a resource shared by threads across different processes. For that, use a mutex.</p> <p>Critical sections are Kernel objects and, as such, are managed by the Kernel, and accessed by user programs through handles. They are implemented using a semaphore. </p> <p>The critical section handle is provided by <xref href="GUID-FC5F1EC1-28CC-3B06-83C4-B90EF8EEBA07.dita"><apiname>RCriticalSection</apiname></xref>.</p> </section> </conbody></concept> |
12 <concept id="GUID-B1C0C5E2-DC8D-5230-8D4B-338DF619F1D2" xml:lang="en"><title>Critical |
|
13 Sections Overview</title><shortdesc>This document is an overview of critical sections.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
14 <section id="GUID-0DF94D51-F739-4CFD-85B9-4EAF994743F6"><title>Purpose</title> <p>Synchronises exclusive access to shared |
|
15 resources within a single process. </p> </section> |
|
16 <section id="GUID-B5B624CB-4EEC-4E20-A92A-C87457D68C5C"><title>Description</title> <p>Critical sections are typically used |
|
17 to serialize access to a section of re-entrant code that cannot be executed |
|
18 concurrently by more than one thread within a process. A critical section |
|
19 object only allows one thread into a controlled section, forcing other threads |
|
20 which attempt to gain access to that critical section to wait until the first |
|
21 thread has exited from that section.</p> <p>A critical section <i>cannot</i> be |
|
22 used to control access to a resource shared by threads across different processes. |
|
23 For that, use a mutex.</p> <p>Critical sections are Kernel objects and, as |
|
24 such, are managed by the Kernel, and accessed by user programs through handles. |
|
25 They are implemented using a semaphore. </p> <p>The critical section handle |
|
26 is provided by <xref href="GUID-FC5F1EC1-28CC-3B06-83C4-B90EF8EEBA07.dita"><apiname>RCriticalSection</apiname></xref>.</p> </section> |
|
27 </conbody></concept> |