Hello everybody,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I have a problem in running a pthread based<br>application whose source is given below.<br>//sample.c<br>#include &lt;stdio.h&gt;<br>#include &lt;stdlib.h&gt;<br>#include &lt;pthread.h
&gt;<br><br>void *thread1_function(void *);<br>void *thread2_function(void *);<br><br>int main(void)<br>{<br>&nbsp;pthread_t thread1,thread2;<br>&nbsp;char *message1 = &quot;Thread 1&quot;;<br>&nbsp;char *message2 = &quot;Thread 2&quot;;
<br>&nbsp;int iret1,iret2;<br>&nbsp;iret1 = pthread_create(&amp;thread1,NULL,thread1_function,(void*)message1);<br>&nbsp;iret2 = pthread_create(&amp;thread2,NULL,thread2_function,(void*)message2);<br><br>&nbsp;pthread_join(thread1,iret1);<br>
&nbsp;pthread_join(thread2,iret2);<br>&nbsp;printf(&quot;Thread 1 returns: %d\n&quot;,iret1);<br>&nbsp;printf(&quot;Thread 2 returns: %d\n&quot;,iret2);<br>&nbsp;exit(0);<br>}<br><br>void *thread1_function(void *ptr)<br>{<br>&nbsp;char *message;<br>
&nbsp;message = (char *) ptr;<br>&nbsp;while(1)<br>&nbsp;{<br>&nbsp; printf(&quot;%s\n&quot;,message);<br>&nbsp; sleep(5);<br>&nbsp;}<br>}<br><br>void *thread2_function(void *ptr)<br>{<br>&nbsp;char *message;<br>&nbsp;message = (char *) ptr;<br>&nbsp;while(1)<br>&nbsp;{<br>
&nbsp; printf(&quot;%s\n&quot;,message);<br>&nbsp; sleep(8);<br>&nbsp;}<br>}<br>//end of sample.c<br><br>I compiled using the command $powerpc-linux-uclibc-gcc -lpthread -o sample sample.c<br><br>when I run on my target board(MPC850 based custom board), I find multiple copies of the same program(I am invoking only once)&nbsp;is running. ps -e command show the following output.
<br><br>PID&nbsp; Uid&nbsp;&nbsp;&nbsp;&nbsp; VmSize Stat Command<br>&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 392 S&nbsp;&nbsp; init<br>&nbsp;&nbsp;&nbsp; 2 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SW&nbsp; [keventd]<br>&nbsp;&nbsp;&nbsp; 3 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SWN [ksoftirqd_CPU0]<br>&nbsp;&nbsp;&nbsp; 4 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SW&nbsp; [kswapd]<br>&nbsp;&nbsp;&nbsp; 5 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SW&nbsp; [bdflush]
<br>&nbsp;&nbsp;&nbsp; 6 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SW&nbsp; [kupdated]<br>&nbsp;&nbsp;&nbsp; 7 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SW&nbsp; [rpciod]<br>&nbsp;&nbsp; 36 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1284 S&nbsp;&nbsp; /bin/snmpd -Dagentx<br>&nbsp;&nbsp; 41 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024 S&nbsp;&nbsp; /bin/bash<br>&nbsp;&nbsp; 42 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 372 S&nbsp;&nbsp; /sbin/syslogd -n -m 0<br>
&nbsp;&nbsp; 43 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 348 S&nbsp;&nbsp; /sbin/klogd -n<br>&nbsp;&nbsp; 51 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 296 S&nbsp;&nbsp; sample<br>&nbsp;&nbsp; 52 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 296 S&nbsp;&nbsp; sample<br>&nbsp;&nbsp; 53 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 296 S&nbsp;&nbsp; sample<br>&nbsp;&nbsp; 54 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 296 S&nbsp;&nbsp; sample<br>&nbsp;&nbsp; 56 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 372 R&nbsp;&nbsp; ps<br><br>
Why is this program is running multiple copies in the memory? How to avoid this.If I compile<br>the same program in PC(x86 with glibc) It is running fine(no multiple<br>copies). So how to avoid this what is wrong with my program? Please help me.
<br><br>Regards,<br><br>Ratheesh<br>