Vincent Lefevre <vinc...@vinc17.net> writes: > More than an order issue, this is undefined behavior. In C11: > > 5.1.2.4 Multi-threaded executions and data races > > 4 Two expression evaluations conflict if one of them modifies a > memory location and the other one reads or modifies the same > memory location. > > 25 The execution of a program contains a data race if it contains > two conflicting actions in different threads, at least one of > which is not atomic, and neither happens before the other. Any > such data race results in undefined behavior.
Does C11 provide any way to initialize a local static variable, like in recent C++? I.e., not code running before main, but code running the first time the function is entered, and guaranteed to run just once? > I don't think volatile matters. AFAIK, what you need is _Atomic (C11). If we can make this thread safe with C11, I think it's fine to document that mini-gmp requires C11 for thread safety. (I'd still prefer the simpler way of reying on float.h constants, though). Regards, /Niels -- Niels Möller. PGP-encrypted email is preferred. Keyid 368C6677. Internet email is subject to wholesale government surveillance. _______________________________________________ gmp-devel mailing list gmp-devel@gmplib.org https://gmplib.org/mailman/listinfo/gmp-devel