Thread attribute administration

The function pthread_attr_init() must be called to initialize the attribute structure before using it:

...
pthread_attr_t  attr;
...
pthread_attr_init (&attr);

You could call pthread_attr_destroy() to "uninitialize" the thread attribute structure, but almost no one ever does (unless you have POSIX-compliant code).

In the descriptions that follow, I've marked the default values with "(default)."