This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
api:thread [2017/06/11 10:15] payonel |
api:thread [2017/09/07 18:11] payonel [Thread API] |
||
---|---|---|---|
Line 114: | Line 114: | ||
``` | ``` | ||
- | * Please note that threads resume order is not specified | + | * Please note that threads resume order is not specified and this example may print "D" before it prints "Main program end" |
+ | |||
+ | - `thread.current(): table` | ||
+ | |||
+ | Returns the current thread `t` object. The init process does not represent a thread and nothing is returned from this method if called from the init process and not inside any thread. | ||
+ | |||
===== Thread Handle API ===== | ===== Thread Handle API ===== | ||
Line 126: | Line 132: | ||
- `t:suspend(): boolean, string` | - `t:suspend(): boolean, string` | ||
- | Suspends (or freezes) a running thread. Returns success and an error message on failure. A "suspended" thread never autonomously wakes up and dies as soon as its parent process (if attached) closes. A suspended thread ignores events. That means any event listeners or timers created inside the thread will not respond to event notifications. Note that threads do not buffer event signals and a suspended thread may miss event signals it was waiting for. For example, if a thread was last waiting on `event.pull("modem_message")` and is "suspended" and a "modem_message" is received by the computer then the thread will miss the event and never know it happened. | + | Suspends (or freezes) a running thread. Returns success and an error message on failure. A "suspended" thread never autonomously wakes up and dies as soon as its parent process (if attached) closes. A suspended thread ignores events. That means any event listeners or timers created inside the thread will not respond to event notifications. Note that threads do not buffer event signals and a suspended thread may miss event signals it was waiting for. For example, if a thread was last waiting on `event.pull("modem_message")` and is "suspended" and a "modem_message" is received by the computer then the thread will miss the event and never know it happened. Please note that if you suspend a thread that is blocked waiting for an event, it is unspecified which event the thread will receive when it is next resumed. |
**Special notes about `t:resume`, `t:suspend`** | **Special notes about `t:resume`, `t:suspend`** | ||
Line 147: | Line 153: | ||
``` | ``` | ||
start | start | ||
- | after suspend | ||
``` | ``` | ||
Line 276: | Line 281: | ||
print("reader done") | print("reader done") | ||
end) | end) | ||
- | print("p end", t:status()) | + | print("p end", reader:status()) |
``` | ``` | ||
Line 324: | Line 329: | ||
```lua | ```lua | ||
+ | local event = require("event") | ||
local thread = require("thread") | local thread = require("thread") | ||
thread.create(function() | thread.create(function() |