38 afterwards</xref></p></li> |
38 afterwards</xref></p></li> |
39 <li><p><xref href="GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita#GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067/GUID-903D3074-254D-4639-9EBB-196A06736301">Relying |
39 <li><p><xref href="GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita#GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067/GUID-903D3074-254D-4639-9EBB-196A06736301">Relying |
40 on thread priority for execution order</xref></p></li> |
40 on thread priority for execution order</xref></p></li> |
41 <li><p><xref href="GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita#GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067/GUID-925A024E-06E4-439B-B324-E16BDF5C06BD">Relying |
41 <li><p><xref href="GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita#GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067/GUID-925A024E-06E4-439B-B324-E16BDF5C06BD">Relying |
42 on thread priority for publish and subscribe execution order</xref></p></li> |
42 on thread priority for publish and subscribe execution order</xref></p></li> |
43 <li><p><xref href="GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita#GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067/GUID-FD625F77-F517-45ED-B21E-421354CB4197">Cancelling |
|
44 a subscription while a thread is still waiting for notifications</xref></p></li> |
|
45 <li><p><xref href="GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita#GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067/GUID-C1A9B0A2-9423-468F-8B29-45001717B9C2">Other |
43 <li><p><xref href="GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita#GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067/GUID-C1A9B0A2-9423-468F-8B29-45001717B9C2">Other |
46 race conditions due to unexpected thread ordering</xref></p></li> |
44 race conditions due to unexpected thread ordering</xref></p></li> |
47 <li><p><xref href="GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita#GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067/GUID-ED30D34F-6976-493E-A869-9A906A5CBDA5">Using |
45 <li><p><xref href="GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita#GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067/GUID-ED30D34F-6976-493E-A869-9A906A5CBDA5">Using |
48 non-Symbian synchronisation APIs</xref></p></li> |
46 non-Symbian synchronisation APIs</xref></p></li> |
49 </ul> |
47 </ul> |
69 many kernel objects to provide new unique names. It is also possible for you |
67 many kernel objects to provide new unique names. It is also possible for you |
70 to write your own unique name generator.</p></section> |
68 to write your own unique name generator.</p></section> |
71 <section id="GUID-23075EA6-3B4F-4643-AF48-543650D821D8"><title>Passing stack |
69 <section id="GUID-23075EA6-3B4F-4643-AF48-543650D821D8"><title>Passing stack |
72 variables or temporary variables to an asynchronous service</title><fig id="GUID-693794EA-6FB9-489D-823C-C2EA7AA6ACC2"> |
70 variables or temporary variables to an asynchronous service</title><fig id="GUID-693794EA-6FB9-489D-823C-C2EA7AA6ACC2"> |
73 <title>Passing data on the stack</title> |
71 <title>Passing data on the stack</title> |
74 <image href="GUID-0CDD535C-9F46-43F3-A1CC-1A4A0E74629A_d0e639675_href.png" placement="inline"/> |
72 <image href="GUID-0CDD535C-9F46-43F3-A1CC-1A4A0E74629A_d0e16489_href.png" placement="inline"/> |
75 </fig><p>When execution leaves a function, the variables that are local to |
73 </fig><p>When execution leaves a function, the variables that are local to |
76 the function are deallocated from the stack. If you pass local variables as |
74 the function are deallocated from the stack. If you pass local variables as |
77 parameters to an asynchronous function, you must make sure that the other |
75 parameters to an asynchronous function, you must make sure that the other |
78 thread's execution happens before the data is removed from the stack. It is |
76 thread's execution happens before the data is removed from the stack. It is |
79 much better to use objects that persist over the lifetime of an asynchronous |
77 much better to use objects that persist over the lifetime of an asynchronous |
111 <section id="GUID-ED30D34F-6976-493E-A869-9A906A5CBDA5"><title>Using non-Symbian |
109 <section id="GUID-ED30D34F-6976-493E-A869-9A906A5CBDA5"><title>Using non-Symbian |
112 synchronisation APIs</title><p>The Symbian synchronisation and IPC primitives |
110 synchronisation APIs</title><p>The Symbian synchronisation and IPC primitives |
113 protect data and control thread execution on an SMP system. There is no guarantee |
111 protect data and control thread execution on an SMP system. There is no guarantee |
114 that non-Symbian APIs will give the same protection. For SMP-safe code, only |
112 that non-Symbian APIs will give the same protection. For SMP-safe code, only |
115 use the Symbian synchronisation APIs .</p><p>See <xref href="GUID-9D93F895-B975-4F2D-A2A3-817033EA5C12.dita">Data |
113 use the Symbian synchronisation APIs .</p><p>See <xref href="GUID-9D93F895-B975-4F2D-A2A3-817033EA5C12.dita">Data |
116 Integrity and memory barriers</xref> , <xref href="GUID-1F280171-A3F3-4129-8DBE-3B1C4D629C68.dita">Atomic |
114 Integrity and Memory Barriers</xref> , <xref href="GUID-1F280171-A3F3-4129-8DBE-3B1C4D629C68.dita">Atomic |
117 Operations</xref> and <xref href="GUID-16AED228-539F-4BF7-A7FD-9A01FF1A9A84.dita">Locking</xref> for |
115 Operations</xref> and <xref href="GUID-16AED228-539F-4BF7-A7FD-9A01FF1A9A84.dita">Locking</xref> for |
118 useful synchronisation and atomic operation APIs.</p></section> |
116 useful synchronisation and atomic operation APIs.</p></section> |
119 </conbody><related-links> |
117 </conbody><related-links> |
120 <link href="GUID-314FAEB5-946C-4090-B6AA-1BEEC9BE8EFB.dita"><linktext>SMP - Common |
118 <link href="GUID-E55F9286-F586-4665-93D8-86F1E7BE2C7C.dita"><linktext>SMP Developer |
121 Error Patterns - Case Studies</linktext></link> |
119 Tips</linktext></link> |
122 </related-links></concept> |
120 </related-links></concept> |