Loading message with Pthreads
Mostly minor stuff


Good use of fflush(stdout); to insure output.  Something often missed.
Minor: int main() { is not explicitly allowed per the standard.  Better to use int main(void) {
Minor: Naked physical quantity.  Values like height, weight, time, should have units made clear  feet vs meter $327.6 million mistake

// usleep(8000000);
#define SOME_us_TIME_CONSUMPTION (8000000 /* us */)
usleep(SOME_us_TIME_CONSUMPTION);

Minor: Avoid printf() when fputs() will do.  Avoid % issue.. BTW did you mean "safely" vs "savely"?

// printf("This is printed after 'LoadingDots' savely quit.\n");
fputs("This is printed after 'LoadingDots' savely quit.\n", stdout);
// or 
puts("This is printed after 'LoadingDots' savely quit.");

Long lines: Respect the width for the target audience - in this case code review.

// pthread_create(&amp;loadingThread, &amp;attr, loadingDots, (void *)"Loading (main, does something long)");

vs.

pthread_create(&amp;loadingThread, &amp;attr, loadingDots, 
    (void *)"Loading (main, does something long)");

Consider auto format.  The space between bool            loadingStop will likely shrink with auto formatting.  Insure code is presentable even after auto formatting.

// looks OK
static bool loadingStop;
static pthread_mutex_t loadingMutex;

Minor: Not a fan of {} one liners

// if (loadingStop) { break; };
if (loadingStop) { 
  break;
};