exactly what resources are shared by threads in the same processTransferred from: http://blog.chinaunix.net/uid-12461657-id-3182841.html
Thread-shared environments include the process code snippet, the public data of the process (which leverages the shared data, the threads are easily communicating with each other), the file descriptor that the process opens , the processor of the signal, the current directory of the process, and the process user ID and process group ID.
The process has its own personality as well as its many commonalities. With these personalities, threads can achieve concurrency. These personalities include:
1. Thread ID
Each thread has its own thread ID, which is unique in this process. The process uses this to identify the thread.
2. Value of the Register group
Because the threads are running concurrently, each thread has its own different running threads, and when switching from one thread to another, the state of the Register collection of the original thread must be saved so that the thread can be restored in the future when it is re-switched to.
3. The stack of threads
The stack is necessary to ensure that the thread runs independently. A thread function can call a function, and the called function can be nested in layers, so the thread must have its own stack of functions so that the function call can execute normally, not affected by other threads.
4. Error return code
Since many threads in the same process are running concurrently, it is possible for a thread to set the errno value after a system call, while the thread has not handled the error and another thread is running at this point by the scheduler, so that the error value can be modified. Therefore, different threads should have their own error return code variable.
5. thread's signal Shield code
Because each thread is interested in a different signal, the thread's signal mask should be
Management. But all of the threads share the same signal processor .
6. Priority of Threads
Because the thread needs to be dispatched as if it were a process, there must be a parameter that can be used for scheduling
Number, this parameter is the priority of the thread.