Threads are strands of execution of statements. Each executing process must have one main thread. Threads are also called as light weighted process. Threads are executed on different cores as soon as they are created . If some one is trying to implement multi threaded programme in single core processor then there is no advantage of using it. Threads are also part of creating process if the process who created the thread if terminates abnormly then the the associated threads also gets terminated. Since threads are part of the process all the threads of main thread will share the global data of the main threads. All threads of corresponding main threads have local stack to save it's local data. All threads will share the global data , file descriptor , data segment ...
When threads come into picture till that time linux is advanced so much such that it would b very difficult to incorporate thread library into it. This is due to the fact that to incorporate it's library directly into linux lots of changes has to b made into linux operating system which was just like to start developing again linux from scratch as operating system which was not an advisible task. So to use thread in linux we have to import thread library directly while compiling the code. .. To import thread library we just use -lpthread during compilation which means linkable posix thread..