Version: 2021.2
LanguageEnglish
  • C#

AtomicSafetyHandle

struct in Unity.Collections.LowLevel.Unsafe

/

Implemented in:UnityEngine.CoreModule

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

AtomicSafetyHandle is used by the job system to provide validation and full safety.

It becomes available by defining the ENABLE_UNITY_COLLECTIONS_CHECKS symbol.

See Also: the example in NativeContainerAttribute.

Static Methods

CheckDeallocateAndThrowChecks if the handle can be deallocated. Throws an exception if it has already been destroyed or a job is currently accessing the data.
CheckExistsAndThrowChecks if the handle is still valid and throws an exception if it is already destroyed.
CheckGetSecondaryDataPointerAndThrowCheckGetSecondaryDataPointerAndThrow.
CheckReadAndThrowChecks if the handle can be read from. Throws an exception if already destroyed or a job is currently writing to the data.
CheckWriteAndBumpSecondaryVersionPerforms CheckWriteAndThrow and then bumps the secondary version.
CheckWriteAndThrowChecks if the handle can be written to. Throws an exception if already destroyed or a job is currently reading or writing to the data.
CreateCreates a new AtomicSafetyHandle that is valid until AtomicSafetyHandle.Release is called.
EnforceAllBufferJobsHaveCompletedWaits for all jobs running against this AtomicSafetyHandle to complete.
EnforceAllBufferJobsHaveCompletedAndDisableReadWriteWaits for all jobs running against this AtomicSafetyHandle to complete and then disables the read and write access on this atomic safety handle.
EnforceAllBufferJobsHaveCompletedAndReleaseWaits for all jobs running against this AtomicSafetyHandle to complete and then releases the atomic safety handle.
GetAllowReadOrWriteAccessReturns true if the AtomicSafetyHandle is configured to allow reading or writing.
GetReaderArrayFetch the job handles of all jobs reading from the safety handle.
GetReaderNameReturn the name of the specified reading job.
GetTempMemoryHandleReturns the safety handle which should be used for all temp memory allocations in this temp memory scope. All temp memory allocations share the same safety handle since they are automatically disposed of at the same time.
GetTempUnsafePtrSliceHandleReturns a single shared handle, that can be shared by for example NativeSlice pointing to stack memory.
GetWriterReturn the writer (if any) on an atomic safety handle.
GetWriterNameReturn the debug name of the current writer on an atomic safety handle.
IsTempMemoryHandleChecks if an AtomicSafetyHandle is the temp memory safety handle for the currently active temp memory scope.
NewStaticSafetyIdAllocates a new static safety ID, to store information for the provided type T.
PrepareUndisposableMarks the AtomicSafetyHandle so that it cannot be disposed of.
ReleaseReleases a previously created AtomicSafetyHandle.
SetAllowReadOrWriteAccessLets you prevent read or write access on the atomic safety handle.
SetAllowSecondaryVersionWritingSwitches the AtomicSafetyHandle to the secondary version number.
SetBumpSecondaryVersionOnScheduleWriteLets you bump the secondary version when scheduling a job that has write access to the atomic safety handle.
SetCustomErrorMessageProvide a custom error message for a specific job debugger error type, in cases where additional context can be provided.
SetStaticSafetyIdAssigns the provided static safety ID to an AtomicSafetyHandle. The ID's owner type name and any custom error messages are used by the job debugger when reporting errors involving the target handle.
UseSecondaryVersionSwitches the AtomicSafetyHandle to the secondary version number.