Thread functionality
Now, we will speak about threads. The threads' functionalities are very close to the fork ones, but with some important differences. A thread will create a new stream to your running process. Its starting point is a function that is specified as a parameter. A thread will also be executed in the same context as its parent. The main implication is that the memory is the same, but it's not the only one. If the parent process dies, all its threads will die too.
These two points can be a problem if you don't know how to deal with them. Let's take an example of the concurrent memory access.
Let's say that you have a global variable in your program named var
. The main process will then create a thread. This thread will then write into var
and at the same time, the main process can write in it too. This will result in an undefined behavior. There are different solutions to avoid this behavior and the common one is to lock the access to this variable with a mutex.
To put it simply...