Skip to content

compare_and_swapとtest_and_setで受け取るポインタがvolatileかどうかが統一されていない #84

@usatie

Description

@usatie

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions