You can synchronize your threads' access to a FILE with flockfile/funlockfile.
Code:
FILE *ftty= stdout;
flockfile(ftty);
fprintf(ftty, "\x1b[%d;%dH", row, column);
fprintf(ftty, "Doing great");
fprintf(ftty, "\x1b[K");
fflush(ftty);
funlockfile(ftty);
Note: it doesn't mean additional complexity, flockfile+funlockfile is already being used by FILE-operations; also nesting flockfile's isn't a problem, there is a counter to properly handle that.