Compiler reordering around mutex boundaries?

前端 未结 6 834
心在旅途
心在旅途 2020-12-17 23:14

Suppose I have my own non-inline functions LockMutex and UnlockMutex, which are using some proper mutex - such as boost - inside. How will the compiler know not to reorder o

6条回答
  •  情书的邮戳
    2020-12-17 23:37

    As it is written, if the functions are not inline, the compiler won't move the variable assignation, as the call may be unrelated to the _field variable, but it has to preserve the strict order of calls. If, however, the compiler decides to inline the calls, I think it will treat them as blocks of independent code, that is, it will only reorder instructions within the same code unit (the inlined function itself) but not with the following or preceding code (the assignation to the _field variable).

提交回复
热议问题