The virtual machine is single-threaded. All Smalltalk Processes share
a single OS thread.
Call-out to native shared libraries can be made on the VM thread or on
an independent thread. When made on an independent (ACO) thread,
the calling Smalltalk process typically blocks (allowing other Smalltalk
processes to continue execution on the VM thread) until the called
procedure completes with a return value.
It is possibly, however, to make such calls and have the calling
Smalltalk process continue execution (on the VM thread) while the
procedure running on the ACO thread runs. The Smalltalk Process can
later poll for a return value, if desired.
Generally, these ACO threads are allocated on-demand and cached in a
pool when not in use by a call-out. It is possible, however, for a
Smalltalk Process to reserve (or "lock") an ACO thread for its exclusive
use. This is neccessary, in particular, when a shared library maintains
thread-specific state across calls and so requires successive calls to
be made on the same thread.
I'm wondering if there is a particular reason for AbtDbmSystem to set busy cursors when doing threaded calls? It hinders the user experience when doing database calls in a background process.
Users browsing this forum: Yahoo [Bot] and 1 guest