void
atomic_work_item_fence
(
| cl_mem_fence_flags flags, |
memory_order order, | |
memory_scope scope) |
flags
Must be set to CLK_GLOBAL_MEM_FENCE
,
CLK_LOCAL_MEM_FENCE
,
CLK_IMAGE_MEM_FENCE
or a combination
of these values ORed together; otherwise the
behavior is undefined. The behavior of calling
atomic_work_item_fence
with
CLK_GLOBAL_MEM_FENCE
,
CLK_LOCAL_MEM_FENCE
or
CLK_IMAGE_MEM_FENCE
ORed together is equivalent to calling atomic_work_item_fence
individually for each of the fence values set in flags
.
order
scope
Depending on the value of order, this operation:
has no effects, if order
== memory_order_relaxed
.
is an acquire fence, if order
== memory_order_acquire
.
is a release fence, if order
== memory_order_release
.
is both an acquire fence and a release fence,
if order
== memory_order_acq_rel
.
is a sequentially consistent acquire and release fence, if
order
== memory_order_seq_cst
.
For images declared with the read_write
qualifier,
the atomic_work_item_fence
must be called to make sure that writes to the image by a
work-item become visible to that workitem on subsequent
reads to that image by that work-item.