Problem

Consider the following code using the POSIX Pthreads API:thread2.c#include #include #inclu...

Consider the following code using the POSIX Pthreads API:

thread2.c

#include

#include

#include

#include

int myglobal;

void *thread_function(void *arg) {

int i,j;

for ( i=0; i<20; i++ ) {

j=myglobal;

j=j+1;

printf(“.”);

fflush(stdout);

sleep(1);

myglobal=j;

}

return NULL;

}

int main(void) {

pthread_t mythread;

int i;

if ( pthread_create( &mythread, NULL, thread_function,

NULL) ) {

printf(ldquo;error creating thread.”);

abort();

}

for ( i=0; i<20; i++) {

myglobal=myglobal+1;

printf(“o”);

fflush(stdout);

sleep(1);

}

if ( pthread_join ( mythread, NULL ) ) {

printf(“error joining thread.”);

abort();

}

printf(“\nmyglobal equals %d\n”,myglobal);

exit(0);

}

In main() we first declare a variable called mythread, which has a type of pthread_t. This is essentially an ID for a thread. Next, the if statement creates a thread associated with mythread. The call pthread_create() returns zero on success and a nonzero value on failure. The third argument of pthread_create() is the name of a function that the new thread will execute when it starts. When this thread_function() returns, the thread terminates. Meanwhile, the main program itself defines a thread, so that there are two threads executing. The pthread_join function enables the main thread to wait until the new thread completes.

a. What does this program accomplish?

b. Here is the output from the executed program:

$ ./thread2

..o.o.o.o.oo.o.o.o.o.o.o.o.o.o..o.o.o.o.o

myglobal equals 21

Is this the output you would expect? If not, what has gone wrong?

Step-by-Step Solution

Request Professional Solution

Request Solution!

We need at least 10 more requests to produce the solution.

0 / 10 have requested this problem solution

The more requests, the faster the answer.

Request! (Login Required)


All students who have requested the solution will be notified once they are available.
Add your Solution
Textbook Solutions and Answers Search
Solutions For Problems in Chapter 4