diff options
author | Benoit Germain <benoit.germain@ubisoft.com> | 2024-06-26 11:01:01 +0200 |
---|---|---|
committer | Benoit Germain <benoit.germain@ubisoft.com> | 2024-06-26 11:01:01 +0200 |
commit | 57176e9b135b037fd33b8291d12416b9485b759b (patch) | |
tree | d716ce09d572f8ebf7272117928c7b6072dd7aff /docs | |
parent | 2c6898964400e6fa77b0e368f477b739fc155f90 (diff) | |
download | lanes-57176e9b135b037fd33b8291d12416b9485b759b.tar.gz lanes-57176e9b135b037fd33b8291d12416b9485b759b.tar.bz2 lanes-57176e9b135b037fd33b8291d12416b9485b759b.zip |
Make lanes.gen stricter on base libraries
Diffstat (limited to 'docs')
-rw-r--r-- | docs/index.html | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/docs/index.html b/docs/index.html index 281bd82..c6cf474 100644 --- a/docs/index.html +++ b/docs/index.html | |||
@@ -1185,13 +1185,17 @@ | |||
1185 | <ul> | 1185 | <ul> |
1186 | <li>Keys can be of boolean, number, string, light userdata, and deep userdata type. Tables and functions can't be keys because their identity isn't preserved when transfered from one Lua state to another.</li> | 1186 | <li>Keys can be of boolean, number, string, light userdata, and deep userdata type. Tables and functions can't be keys because their identity isn't preserved when transfered from one Lua state to another.</li> |
1187 | <li>values can be any type supported by inter-state copying (same <a href="#limitations">limits</a> as for function arguments and upvalues).</li> | 1187 | <li>values can be any type supported by inter-state copying (same <a href="#limitations">limits</a> as for function arguments and upvalues).</li> |
1188 | <li>consuming method is <tt>:receive</tt> (not in).</li> | 1188 | <li> |
1189 | <li>non-consuming method is <tt>:get</tt> (not rd).</li> | 1189 | Registered functions transiting into a Keeper state are converted to a special dummy function that holds its actual identity. On transit out, the identity is used to find the real function in the destination. |
1190 | <li>two producer-side methods: <tt>:send</tt> and <tt>:set</tt> (not out).</li> | 1190 | For that reason, it is not possible to run user code inside a Keeper state. The only exception is <a href="#on_state_create"><tt>on_state_create</tt></a>, which is handled in a special way. |
1191 | </li> | ||
1192 | <li>Consuming method is <tt>:receive</tt> (not in).</li> | ||
1193 | <li>Non-consuming method is <tt>:get</tt> (not rd).</li> | ||
1194 | <li>Two producer-side methods: <tt>:send</tt> and <tt>:set</tt> (not out).</li> | ||
1191 | <li><tt>send</tt> allows for sending multiple values -atomically- to a given key.</li> | 1195 | <li><tt>send</tt> allows for sending multiple values -atomically- to a given key.</li> |
1192 | <li><tt>receive</tt> can wait for multiple keys at once.</li> | 1196 | <li><tt>receive</tt> can wait for multiple keys at once.</li> |
1193 | <li><tt>receive</tt> has a batched mode to consume more than one value from a single key, as in <tt>linda:receive(1.0, linda.batched, "key", 3, 6).</tt></li> | 1197 | <li><tt>receive</tt> has a batched mode to consume more than one value from a single key, as in <tt>linda:receive(1.0, linda.batched, "key", 3, 6).</tt></li> |
1194 | <li>individual keys' queue length can be limited, balancing speed differences in a producer/consumer scenario (making <tt>:send</tt> wait).</li> | 1198 | <li>Individual keys' queue length can be limited, balancing speed differences in a producer/consumer scenario (making <tt>:send</tt> wait).</li> |
1195 | <li><tt>tostring(linda)</tt> returns a string of the form <tt>"Linda: <opt_name>"</tt></li> | 1199 | <li><tt>tostring(linda)</tt> returns a string of the form <tt>"Linda: <opt_name>"</tt></li> |
1196 | <li> | 1200 | <li> |
1197 | Several Linda objects may share the same <a href="#keepers">Keeper state</a>. In case there is more than one user <a href="#keepers">Keeper state</a>, assignation must be controlled with the Linda's group (an integer in <tt>[0,nb_user_keepers]</tt>). | 1201 | Several Linda objects may share the same <a href="#keepers">Keeper state</a>. In case there is more than one user <a href="#keepers">Keeper state</a>, assignation must be controlled with the Linda's group (an integer in <tt>[0,nb_user_keepers]</tt>). |
@@ -1375,7 +1379,7 @@ | |||
1375 | Whenever Lua code reads from or writes to a Linda, the mutex is acquired. If Linda limits don't block the operation, it is fulfilled, then the mutex is released.<br /> | 1379 | Whenever Lua code reads from or writes to a Linda, the mutex is acquired. If Linda limits don't block the operation, it is fulfilled, then the mutex is released.<br /> |
1376 | If the Linda has to block, the mutex is released and the OS thread sleeps, waiting for a Linda operation to be signalled. When an operation occurs on the same Linda, possibly fufilling the condition, or a timeout expires, the thread wakes up.<br /> | 1380 | If the Linda has to block, the mutex is released and the OS thread sleeps, waiting for a Linda operation to be signalled. When an operation occurs on the same Linda, possibly fufilling the condition, or a timeout expires, the thread wakes up.<br /> |
1377 | If the thread is woken but the condition is not yet fulfilled, it goes back to sleep, until the timeout expires.<br /> | 1381 | If the thread is woken but the condition is not yet fulfilled, it goes back to sleep, until the timeout expires.<br /> |
1378 | When a lane is cancelled, the signal it is waiting on (if any) is signalled. In that case, the Linda operation will return <tt>lanes.cancel_error</tt>. | 1382 | When a lane is cancelled, the signal it is waiting on (if any) is signalled. In that case, the Linda operation will return <tt>lanes.cancel_error</tt>.<br /> |
1379 | </p> | 1383 | </p> |
1380 | 1384 | ||
1381 | <p> | 1385 | <p> |