Help with multithreading

I take this question of the The Linux Programming Interface:

 A Linux and Unix System Programming page 652 exercise 30.1 

I want someone to explain the under line statement because it sounds complex to me couldn't understand anything

30-1 Modify the program (thread_incr.c) so that each loop in the thread�s start function outputs the current value of glob and some identifier that uniquely identifies the thread.

The unique identifier for the thread could be specified as an argument to the pthread_create()
call used to create the thread. For this program, that would require changing the argument 
of the thread�s start function to be a pointer to a structure containing the unique identifier 
and a loop limit value.

Run the program, redirecting output to a file, and then inspect the
file to see what happens to glob as the kernel scheduler alternates execution between the
two threads.

I believe every thread lib has some thread id function for threads to self-idetify and for other thread lib functions to use to relate to them. Man Page for pthread_self (opensolaris Section 3c) - The UNIX and Linux Forums

You could also have them pull their own number from a mutex protected integer.

What they're talking about with the pointer is, whenever you create a thread, you are giving it a pointer to something. The function "called" by the new thread has that value passed into it -- that's why it takes any value at all, instead of being void.

It can be whatever you want, and is always there. If you're not passing data into it, you're probably just giving it NULL. If you wanted to pass each thread something different, be sure to not give them the same variable -- they'll all end up pointing to the same thing, they won't get unique values. To be different it needs to literally be different memory. You could give them different elements of an array, for example. Memory fresh from malloc() also works.

Of course, threads have their own unique ID's in the first place, so it's a bit redundant to give it your own unique number, but that's why this is an exercise.

Well, you can pass it a pointer to a struct or object with an id and everything else you want to initialize it with and potentially communicate to it with.

Is it an exercise in finding out the student knows a) about thread ids, or is it about b) passing to the thread at creation time, never mind c) the distributed approach of checking one out from a mutex integer? The mutex integer, especially in an object, can have a corresponding array of pointers where the thread can hang a struct of all the data it is involved in for global access. The object interface method can ensure the array is large enough to hold the current number of this applications thread struct pointers. Distributed generation of the struct, array entry lightens the load on the master thread at startup. Since we are in thread land, it is time to think about parallelism and delegated tasks.