Symbian3/SDK/Source/GUID-092C18D4-A525-5562-9BF6-41435E400290.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Fri, 11 Jun 2010 12:39:03 +0100
changeset 8 ae94777fff8f
parent 7 51a74ef9ed63
child 13 48780e181b38
permissions -rw-r--r--
Week 23 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 2714, Bug 462.

<?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-10-1-11-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-10-1-11-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-94FEEC14-384E-364F-929F-0339FE559FB0.dita"><apiname>pthread_mutex_lock(pthread_mutex_t *)</apiname></xref> </p><p><xref href="GUID-E0AABD52-5A8F-3F49-A46D-5CE5BE975765.dita"><apiname>pthread_mutex_unlock(pthread_mutex_t *)</apiname></xref> </p><p><xref href="GUID-23868643-4C61-3661-843B-2D67C54CF163.dita"><apiname>pthread_join(pthread_t,void **)</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-10-1-11-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>