IORef package:streamly-core

A mutable variable in a mutation capable monad (IO) holding a Unboxed value. This allows fast modification because of unboxed storage.

Multithread Consistency Notes

In general, any value that straddles a machine word cannot be guaranteed to be consistently read from another thread without a lock. GHC heap objects are always machine word aligned, therefore, a IORef is also word aligned. On a 64-bit platform, writing a 64-bit aligned type from one thread and reading it from another thread should give consistent old or new value. The same holds true for 32-bit values on a 32-bit platform.
An IORef holds a single Unbox-able value.
Deprecated: Use IORef from MutByteArray module.
Modify the value of an IORef using a function with strict application. Pre-release
Create a new IORef. Pre-release
Internal, do not use.
Generate a stream by continuously reading the IORef. This operation reads the IORef without any synchronization. It can be assumed to be atomic because the size fits into machine register size. We are assuming that compiler uses single instructions to access the memory. It may read stale values though until caches are synchronised in a multiprocessor architecture. Pre-release
Read a value from an IORef. Pre-release
Write a value to an IORef. Pre-release
Deprecated: Use modifyIORef' from MutByteArray module.
Deprecated: Use newIORef from MutByteArray module.
Deprecated: Use pollIntIORef from MutByteArray module.
Deprecated: Use readIORef from MutByteArray module.
Deprecated: Use writeIORef from MutByteArray module.