Febuary 11, 2007 MEMBAR_OPS 3

### NAME

membar_ops, membar_enter, membar_exit, membar_producer, membar_consumer, membar_sync - memory access barrier operations

### SYNOPSIS

```void` membar_enter(```void`)
```void` membar_exit(```void`)
```void` membar_producer(```void`)
```void` membar_consumer(```void`)
```void` membar_sync(```void`)

### DESCRIPTION

The membar_ops family of functions provide memory access barrier operations necessary for synchronization in multiprocessor execution environments that have relaxed load and store order.

membar_enter(``)

  Any store preceeding membar_enter(``) will reach global visibility before all loads and stores following it.

  membar_enter(``) is typically used in code that implements locking primitives to ensure that a lock protects its data.

membar_exit(``)

  All loads and stores preceding membar_exit(``) will reach global visibility before any store that follows it.

  membar_exit(``) is typically used in code that implements locking primitives to ensure that a lock protects its data.

membar_producer(``)

  All stores preceding the memory barrier will reach global visibility before any stores after the memory barrier reach global visibility.

membar_consumer(``)

  All loads preceding the memory barrier will complete before any loads after the memory barrier complete.

membar_sync(``)

  All loads and stores preceding the memory barrier will complete and reach global visibility before any loads and stores after the memory barrier complete and reach global visibility.

### SEE ALSO

atomic_ops(3)

### HISTORY

The membar_ops functions first appeared in NetBSD5.0.