aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/internal/task/task.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/internal/task/task.go')
-rw-r--r--src/internal/task/task.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/internal/task/task.go b/src/internal/task/task.go
index 587c67526..546f5ba11 100644
--- a/src/internal/task/task.go
+++ b/src/internal/task/task.go
@@ -27,7 +27,7 @@ type Task struct {
}
// DataUint32 returns the Data field as a uint32. The value is only valid after
-// setting it through SetDataUint32.
+// setting it through SetDataUint32 or by storing to it using DataAtomicUint32.
func (t *Task) DataUint32() uint32 {
return *(*uint32)(unsafe.Pointer(&t.Data))
}
@@ -38,6 +38,11 @@ func (t *Task) SetDataUint32(val uint32) {
*(*uint32)(unsafe.Pointer(&t.Data)) = val
}
+// DataAtomicUint32 returns the Data field as an atomic-if-needed Uint32 value.
+func (t *Task) DataAtomicUint32() *Uint32 {
+ return (*Uint32)(unsafe.Pointer(&t.Data))
+}
+
// getGoroutineStackSize is a compiler intrinsic that returns the stack size for
// the given function and falls back to the default stack size. It is replaced
// with a load from a special section just before codegen.