TASが受け取るboolのポインタpはvolatileなのに、CASが受け取るポインタpはvolatileではなくてもよいのでしょうか? 逆に、test_and_setにおいてvolatileでポインタを受け取る必要があるのでしょうか? ``` bool compare_and_swap(uint64_t *p, uint64_t val, uint64_t newval); bool test_and_set(volatile bool *p); void tas_release(volatile bool *p); ``` いくつか関係のありそうな資料やQAを読んでみたのですが、分からなかったので質問形式となってしまうことをご容赦ください。 https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html https://stackoverflow.com/questions/6023310/sync-bool-compare-and-swap-compiler-flags-and-includes https://stackoverflow.com/questions/4557979/when-to-use-volatile-with-multi-threading