Documentation
¶
Overview ¶
Package gointerop provides Go concurrency primitive wrappers.
Channels ¶
- make-channel, channel?
- channel-send!, channel-receive
- channel-try-send!, channel-try-receive
- channel-close!
Wait Groups ¶
- make-wait-group, wait-group?
- wait-group-add!, wait-group-done!
- wait-group-wait!
Read-Write Mutexes ¶
- make-rw-mutex, rw-mutex?
- rw-mutex-lock!, rw-mutex-unlock!
- rw-mutex-rlock!, rw-mutex-runlock!
Once ¶
- make-once, once?
- once-do!
Atomics ¶
- make-atomic, atomic?
- atomic-load, atomic-store!, atomic-swap!, atomic-cas!
- make-atomic-int64, atomic-int64?
- atomic-int64-load, atomic-int64-store!, atomic-int64-add!
Use Extension or AddToRegistry to register all primitives.
Package gointerop provides Go-specific concurrency primitives.
Index ¶
- Variables
- func PrimAtomicCompareAndSwap(mc machine.CallContext) error
- func PrimAtomicLoad(mc machine.CallContext) error
- func PrimAtomicStore(mc machine.CallContext) error
- func PrimAtomicSwap(mc machine.CallContext) error
- func PrimChannelCapacity(mc machine.CallContext) error
- func PrimChannelClose(mc machine.CallContext) error
- func PrimChannelClosedQ(mc machine.CallContext) error
- func PrimChannelLength(mc machine.CallContext) error
- func PrimChannelReceive(mc machine.CallContext) error
- func PrimChannelSend(mc machine.CallContext) error
- func PrimChannelTryReceive(mc machine.CallContext) error
- func PrimChannelTrySend(mc machine.CallContext) error
- func PrimMakeAtomic(mc machine.CallContext) error
- func PrimMakeChannel(mc machine.CallContext) error
- func PrimMakeOnce(mc machine.CallContext) error
- func PrimMakeRWMutex(mc machine.CallContext) error
- func PrimMakeWaitGroup(mc machine.CallContext) error
- func PrimOnceDo(cc machine.CallContext) error
- func PrimOnceDoneQ(mc machine.CallContext) error
- func PrimRWMutexReadLock(mc machine.CallContext) error
- func PrimRWMutexReadUnlock(mc machine.CallContext) error
- func PrimRWMutexTryReadLock(mc machine.CallContext) error
- func PrimRWMutexTryWriteLock(mc machine.CallContext) error
- func PrimRWMutexWriteLock(mc machine.CallContext) error
- func PrimRWMutexWriteUnlock(mc machine.CallContext) error
- func PrimWaitGroupAdd(mc machine.CallContext) error
- func PrimWaitGroupDone(mc machine.CallContext) error
- func PrimWaitGroupWait(mc machine.CallContext) error
Constants ¶
This section is empty.
Variables ¶
var AddToRegistry = Builder.AddToRegistry
AddToRegistry registers all Go interop primitives.
var Builder = registry.NewRegistryBuilder(addChannels, addWaitGroup, addRWMutex, addOnce, addAtomic)
Builder aggregates all Go interop registration functions.
var Extension = registry.NewDescribedExtension("gointerop", "Go interop: Go value wrapping, struct access, method calls.", AddToRegistry)
Extension is the Go interop extension.
var PrimAtomicQ = helpers.MakeTypePredicate(func(o values.Value) bool { _, ok := o.(*values.AtomicBox) return ok })
PrimAtomicQ tests if an object is an AtomicBox (atomic? obj) -> boolean
var PrimChannelQ = helpers.MakeTypePredicate(func(o values.Value) bool { _, ok := o.(*values.Channel) return ok })
PrimChannelQ tests if an object is a channel (channel? obj) -> boolean
var PrimOnceQ = helpers.MakeTypePredicate(func(o values.Value) bool { _, ok := o.(*values.Once) return ok })
PrimOnceQ tests if an object is a Once (once? obj) -> boolean
var PrimRWMutexQ = helpers.MakeTypePredicate(func(o values.Value) bool { _, ok := o.(*values.RWMutex) return ok })
PrimRWMutexQ tests if an object is an RWMutex (rw-mutex? obj) -> boolean
var PrimWaitGroupQ = helpers.MakeTypePredicate(func(o values.Value) bool { _, ok := o.(*values.WaitGroup) return ok })
PrimWaitGroupQ tests if an object is a WaitGroup (wait-group? obj) -> boolean
Functions ¶
func PrimAtomicCompareAndSwap ¶
func PrimAtomicCompareAndSwap(mc machine.CallContext) error
PrimAtomicCompareAndSwap atomically compares and swaps (atomic-compare-and-swap! a old new) -> boolean
func PrimAtomicLoad ¶
func PrimAtomicLoad(mc machine.CallContext) error
PrimAtomicLoad atomically loads the value (atomic-load a) -> value
func PrimAtomicStore ¶
func PrimAtomicStore(mc machine.CallContext) error
PrimAtomicStore atomically stores a value (atomic-store! a value) -> void
func PrimAtomicSwap ¶
func PrimAtomicSwap(mc machine.CallContext) error
PrimAtomicSwap atomically swaps and returns the old value (atomic-swap! a new) -> old
func PrimChannelCapacity ¶
func PrimChannelCapacity(mc machine.CallContext) error
PrimChannelCapacity returns the channel's buffer capacity (channel-capacity ch) -> integer
func PrimChannelClose ¶
func PrimChannelClose(mc machine.CallContext) error
PrimChannelClose closes the channel (channel-close! ch) -> void
func PrimChannelClosedQ ¶
func PrimChannelClosedQ(mc machine.CallContext) error
PrimChannelClosedQ tests if a channel is closed (channel-closed? ch) -> boolean
func PrimChannelLength ¶
func PrimChannelLength(mc machine.CallContext) error
PrimChannelLength returns the number of elements in the channel buffer (channel-length ch) -> integer
func PrimChannelReceive ¶
func PrimChannelReceive(mc machine.CallContext) error
PrimChannelReceive receives a value from the channel (blocking) (channel-receive ch) -> value
func PrimChannelSend ¶
func PrimChannelSend(mc machine.CallContext) error
PrimChannelSend sends a value on the channel (blocking) (channel-send! ch value) -> void
func PrimChannelTryReceive ¶
func PrimChannelTryReceive(mc machine.CallContext) error
PrimChannelTryReceive attempts to receive without blocking (channel-try-receive ch) -> (values value received? open?)
func PrimChannelTrySend ¶
func PrimChannelTrySend(mc machine.CallContext) error
PrimChannelTrySend attempts to send without blocking (channel-try-send! ch value) -> boolean
func PrimMakeAtomic ¶
func PrimMakeAtomic(mc machine.CallContext) error
PrimMakeAtomic creates a new AtomicBox value (make-atomic initial) -> atomic
func PrimMakeChannel ¶
func PrimMakeChannel(mc machine.CallContext) error
PrimMakeChannel creates a new channel (make-channel [buffer-size]) -> channel
func PrimMakeOnce ¶
func PrimMakeOnce(mc machine.CallContext) error
PrimMakeOnce creates a new Once (make-once) -> once
func PrimMakeRWMutex ¶
func PrimMakeRWMutex(mc machine.CallContext) error
PrimMakeRWMutex creates a new RWMutex (make-rw-mutex [name]) -> rw-mutex
func PrimMakeWaitGroup ¶
func PrimMakeWaitGroup(mc machine.CallContext) error
PrimMakeWaitGroup creates a new WaitGroup (make-wait-group) -> wait-group
func PrimOnceDo ¶
func PrimOnceDo(cc machine.CallContext) error
PrimOnceDo executes the thunk only once (once-do! once thunk) -> boolean (true if executed, false if already done)
func PrimOnceDoneQ ¶
func PrimOnceDoneQ(mc machine.CallContext) error
PrimOnceDoneQ tests if the Once has been executed (once-done? once) -> boolean
func PrimRWMutexReadLock ¶
func PrimRWMutexReadLock(mc machine.CallContext) error
PrimRWMutexReadLock acquires the read lock (rw-mutex-read-lock! rwm) -> void
func PrimRWMutexReadUnlock ¶
func PrimRWMutexReadUnlock(mc machine.CallContext) error
PrimRWMutexReadUnlock releases the read lock (rw-mutex-read-unlock! rwm) -> void
func PrimRWMutexTryReadLock ¶
func PrimRWMutexTryReadLock(mc machine.CallContext) error
PrimRWMutexTryReadLock tries to acquire the read lock (rw-mutex-try-read-lock! rwm) -> boolean
func PrimRWMutexTryWriteLock ¶
func PrimRWMutexTryWriteLock(mc machine.CallContext) error
PrimRWMutexTryWriteLock tries to acquire the write lock (rw-mutex-try-write-lock! rwm) -> boolean
func PrimRWMutexWriteLock ¶
func PrimRWMutexWriteLock(mc machine.CallContext) error
PrimRWMutexWriteLock acquires the write lock (rw-mutex-write-lock! rwm) -> void
func PrimRWMutexWriteUnlock ¶
func PrimRWMutexWriteUnlock(mc machine.CallContext) error
PrimRWMutexWriteUnlock releases the write lock (rw-mutex-write-unlock! rwm) -> void
func PrimWaitGroupAdd ¶
func PrimWaitGroupAdd(mc machine.CallContext) error
PrimWaitGroupAdd adds to the WaitGroup counter (wait-group-add! wg n) -> void
func PrimWaitGroupDone ¶
func PrimWaitGroupDone(mc machine.CallContext) error
PrimWaitGroupDone decrements the WaitGroup counter (wait-group-done! wg) -> void
func PrimWaitGroupWait ¶
func PrimWaitGroupWait(mc machine.CallContext) error
PrimWaitGroupWait waits for the WaitGroup counter to reach zero (wait-group-wait! wg) -> void
Types ¶
This section is empty.