Symbian3/SDK/Source/GUID-092C18D4-A525-5562-9BF6-41435E400290.dita
author Dominic Pinkman <Dominic.Pinkman@Nokia.com>
Thu, 11 Mar 2010 15:24:26 +0000
changeset 2 ebc84c812384
parent 0 89d6a7a84779
permissions -rw-r--r--
week 10 bug fix submission: Bug 1892, Bug 1897, Bug 1319. Also 3 or 4 documents were found to contain code blocks with SFL, which has been fixed. Partial fix for broken links, links to Forum Nokia, and the 'Symbian platform' terminology issues.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-092C18D4-A525-5562-9BF6-41435E400290" xml:lang="en"><title>LibpThread
Example - Using P.I.P.S OECORE </title><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>This example application shows, using a P.I.P.S. (P.I.P.S. Is POSIX on
the Symbian platform) program, the use of the LibpThread library to demonstrate
simple multi-threading and synchronisation. </p>
<p>The purpose is to create a basic multithreading example showing the usage
of the LibpThread APIs. This example also shows how multi-threading is used
to achieve concurrency in tasks and sharing of resources. </p>
<section id="GUID-026FD8D6-6C4A-5958-B289-775D4AE1E756-GENID-1-6-1-9-1-1-5-1-3-1-11-1-7-1-2-3"><title>Download</title> <p>Click
on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-84e8baf2-57f1-4255-aeb8-a6ed0ed2145e.zip" scope="external"> LibpThreadExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-84e8baf2-57f1-4255-aeb8-a6ed0ed2145e.html" scope="peer">browse</xref> to view the example code. </p> </section>
<section id="GUID-7E7C4564-B10E-41F9-8A9D-D8A6C5E9C51C-GENID-1-6-1-9-1-1-5-1-3-1-11-1-7-1-2-4"><title>Description</title> <p>The
following sections provide more information about the steps that the example
performs. </p> <p><b> Thread Synchronisation</b> </p> <p>The example creates
three threads named ThreadOne, ThreadTwo and ThreadThree. The threads write
"One", "Two" and "Three" five times in a text file. The text file, located
in <filepath>epoc32\winscw\c\newfile.txt</filepath>, is used as a shared resource
for all three threads. A mutex is used to ensure that first ThreadOne writes
in the file, then ThreadTwo and then ThreadThree. If the mutex is not used
all the threads can simultaneously write in the file. This can be seen by
commenting out <codeph>pthread_mutex_lock</codeph> and <codeph>pthread_mutex_unlock</codeph> in
the code. </p> </section>
<section id="GUID-236CB272-E196-4A61-B627-ACFFC4B37AA1"><title>Related APIs</title><p><xref href="GUID-736D5209-CD86-324C-BAB0-7B15C3D1862D.dita"><apiname>pthread_mutex_lock</apiname></xref> </p><p><xref href="GUID-9D7CD10C-F958-3792-8888-B7F39B148302.dita"><apiname>pthread_mutex_unlock</apiname></xref> </p><p><xref href="GUID-3A89E849-DD7F-3381-9469-6CD89892E616.dita"><apiname>pthread_join</apiname></xref></p><p><xref href="GUID-889CB456-6980-3B92-9350-0C6C8C9AC435.dita"><apiname>pthread_mutex_t</apiname></xref></p></section>
<section id="GUID-67A72761-1D92-46D1-B1C9-7455978BDE4E-GENID-1-6-1-9-1-1-5-1-3-1-11-1-7-1-2-6"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian build
process</xref> describes how to build this example application. </p> <p>The
example builds an executable called <filepath>LibpThreadExample.exe</filepath> in
the standard locations. </p> <p>To run the example, start <filepath>LibpThreadExample.exe</filepath> from
the file system or from your IDE. After launching the executable, depending
on the emulator you are using, you may need to navigate away from the application
launcher or shell screen to view the console. </p> </section>
</conbody></concept>