c++ - What's the usecase of volatile operations on std::atomic<T>? -
this question has answer here:
there has been lot of debate going on concerning usefulness of volatile
in multi-threaded code. people agree, principal usecases of volatile
bare metal applications such device drivers , interrupt handlers, not make variable of built-in type thread-safe. in fact, volatile has lead confusion because of this.
however, has been added function overloads of std::atomic<t>
types, suggests there usecase this. usecases of these operations?
there general usefulness volatile
in sense compiler must not optimise away accesses variable. however, in case, think it's because input may volatile
- in case of const
, can "add" not "remove" volatile
attribute passed in paramater.
thus:
int foo(volatile int *a) { ... }
will accept:
int x; volatile int y; foo(&x); foo(&y);
where if didn't write volatile
, compiler should not accept foo(&y);
variant.
Comments
Post a Comment