Add current restriction on worker_spawn

This commit is contained in:
Patrick Pelissier committed 2022-06-15 00:55:41 +02:00
1 parent 2bebb2b4a1
commit e38dc19ea1
1 file changed
+6
+6
View File
@@ -6538,6 +6538,9 @@ Register the work order 'func(data)' to the the synchronization point 'syncBlock
If no worker is available (and no extraQueue), the work order 'func(data)' will be handled
by the caller. Otherwise the work order 'func(data)' will be handled
by an asynchronous worker and the function immediately returns.
The object(s) referenced by 'data' shall remain available (not destructed) until the
control flow reaches the next synchronization point (worker\_sync),
as theses object(s) may be delayed read by other threads until this point.
#### bool worker\_sync\_p(worker\_block\_t syncBlock)
@@ -6573,6 +6576,9 @@ These lists shall be exhaustive to capture all needed variables.
This macro needs either GCC (for nested function) or CLANG (for blocks)
or a C++11 compiler (for lambda and functional) to work.
The next synchronization point (worker\_sync) shall be present in the control flow
of the current C block.
NOTE1: Even if nested functions are used for GCC, it doesn't generate
a trampoline and the stack doesn't need to be executable as all variables are captured by the library.