get_thread_id
| Definition: | atom thread_id = get_thread_id() |
| Description: | Obtain a unique identifier for the currently executing thread. |
| pwa/p2js: | Not supported. |
| Comments: |
Can be used to distinguish calls originating in a background worker thread from those made by the main (gui) thread. Only the main thread should ever update the gui directly. The returned value bears no resemblance to the thread handles returned by create_thread(). |
| Example: |
constant main_thread = get_thread_id(),
logcs = init_cs()
sequence loggit_stack = {}
global procedure loggit(string text)
-- (this can be called by any code, in any thread)
if get_thread_id()=main_thread then
-- show text in gui
else
enter_cs(logcs)
loggit_stack = append(loggit_stack,text)
leave_cs(logcs)
end if
end procedure
function timer_cb(Ihandle /*ih*/)
-- (this is only ever invoked by the main thread)
-- process any stacked background thread loggit()s in a thread-safe way
enter_cs(logcs)
sequence ls = loggit_stack
loggit_stack = {}
leave_cs(logcs)
for i=1 to length(ls) do
loggit(ls[i])
end for
return IUP_DEFAULT
end function
|
| Implementation: | See builtins\VM\pThreadN.e (an autoinclude) for details of the actual implementation. |
| See Also: | create_thread |