Racing Condition

Hei Chan structurechart@yahoo.com
Thu Dec 20 07:16:00 GMT 2012


Hi,


Let's say I have 2 threads trying to call the function below without any synchronization:

void func(int x) {
    static char buffer[512];
    sprintf(buffer, "%d\n", x);
    printf(buffer);
}

since buffer is static, and so obviously in some cases, there will be 2 threads trying to write to buffer, 1 writing to buffer and another reading from it, or 2 reading from it.

Since it is just an array of char, besides content/stdout might not be what the callers should be expecting; will it cause the program to crash.

Thanks in advance.


Cheers,
Hei



More information about the Gcc-help mailing list