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 id="GUID-092C18D4-A525-5562-9BF6-41435E400290" xml:lang="en"><title>LibpThread |
12 <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> |
13 Example - Using P.I.P.S OECORE </title><prolog><metadata><keywords/></metadata></prolog><conbody> |
13 <p>This example application shows, using a P.I.P.S. (P.I.P.S. Is POSIX |
14 <p>This example application shows, using a P.I.P.S. (P.I.P.S. Is POSIX on |
14 on the Symbian platform) program, the use of the LibpThread library |
15 the Symbian platform) program, the use of the LibpThread library to demonstrate |
15 to demonstrate simple multi-threading and synchronisation. </p> |
16 simple multi-threading and synchronisation. </p> |
16 <p>The purpose is to create a basic multithreading example showing |
17 <p>The purpose is to create a basic multithreading example showing the usage |
17 the usage of the LibpThread APIs. This example also shows how multi-threading |
18 of the LibpThread APIs. This example also shows how multi-threading is used |
18 is used to achieve concurrency in tasks and sharing of resources. </p> |
19 to achieve concurrency in tasks and sharing of resources. </p> |
19 <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> |
20 <section id="GUID-026FD8D6-6C4A-5958-B289-775D4AE1E756-GENID-1-8-1-11-1-1-5-1-3-1-11-1-7-1-2-3"><title>Download</title> <p>Click |
20 <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 |
21 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> |
21 that the example performs. </p> <p><b> Thread Synchronisation</b> </p> <p>The example creates three threads named ThreadOne, |
22 <section id="GUID-7E7C4564-B10E-41F9-8A9D-D8A6C5E9C51C-GENID-1-8-1-11-1-1-5-1-3-1-11-1-7-1-2-4"><title>Description</title> <p>The |
22 ThreadTwo and ThreadThree. The threads write "One", "Two" and "Three" |
23 following sections provide more information about the steps that the example |
23 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 |
24 performs. </p> <p><b> Thread Synchronisation</b> </p> <p>The example creates |
24 used to ensure that first ThreadOne writes in the file, then ThreadTwo |
25 three threads named ThreadOne, ThreadTwo and ThreadThree. The threads write |
25 and then ThreadThree. If the mutex is not used all the threads can |
26 "One", "Two" and "Three" five times in a text file. The text file, located |
26 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> |
27 in <filepath>epoc32\winscw\c\newfile.txt</filepath>, is used as a shared resource |
27 <section id="GUID-236CB272-E196-4A61-B627-ACFFC4B37AA1"><title>Related |
28 for all three threads. A mutex is used to ensure that first ThreadOne writes |
28 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> |
29 in the file, then ThreadTwo and then ThreadThree. If the mutex is not used |
29 <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 |
30 all the threads can simultaneously write in the file. This can be seen by |
30 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 |
31 commenting out <codeph>pthread_mutex_lock</codeph> and <codeph>pthread_mutex_unlock</codeph> in |
31 IDE. After launching the executable, depending on the emulator you |
32 the code. </p> </section> |
32 are using, you may need to navigate away from the application launcher |
33 <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> |
33 or shell screen to view the console. </p> </section> |
34 <section id="GUID-67A72761-1D92-46D1-B1C9-7455978BDE4E-GENID-1-8-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 |
|
35 process</xref> describes how to build this example application. </p> <p>The |
|
36 example builds an executable called <filepath>LibpThreadExample.exe</filepath> in |
|
37 the standard locations. </p> <p>To run the example, start <filepath>LibpThreadExample.exe</filepath> from |
|
38 the file system or from your IDE. After launching the executable, depending |
|
39 on the emulator you are using, you may need to navigate away from the application |
|
40 launcher or shell screen to view the console. </p> </section> |
|
41 </conbody></concept> |
34 </conbody></concept> |