This patch is just a drafted version to show my design of implementing unshackled task.
It contains some problems, like error information is not right, but it could basically show the whole picture.
Will make things right if the design itself is generally right.
The basic design is to create an outer-most parallel team.
It is not regular team because it has its own root.
We first use `pthread_create` to create a new thread, let's call it the initial and also master thread of unshackled team.
This initial thread then initializes a new root, just like what RTL does in initialization.
After that, directly call `__kmpc_fork_call`. It is like the initial thread encounters a parallel region.
The wrapped function for this team is, for master thread, which is the initial thread that we create via `pthread_create` on Linux,
it waits on a condition variable.
The condition variable can only be signaled when RTL is deconstructing.
For other work threads, they just do nothing.
The reason that master thread needs to wait there is, in current implementation, once master thread finishes the wrapped function of this team,
it starts to free the team which is not what we want.
Here are some open issues to be discussed:
1. The master thread sleeps when the initialization is finished.
As Andrey mentioned, we might need it to be awaken from time to time to do some stuffs.
What kind of update/check should be put here?