milliseconds almost surely.
When you have identified those blocks, you start them as tasks using (u
t. n). You could write
pyx0 =. block0verb t. '' block0args
pyx1 =. block1verb t. '' block1args
pyx2 =. block2verb t. '' block2args
etc.
or, if the blockverbs are the same, you could use
pyx012 =. blockverb t. ''"0 block0args;block1args;block2args...
Sometime later, when you need the results, you look inside the pyx.
That's all there is to it! The results are always there! (of course,
what is happening is that your program is blocked until the task has
finished.)
Henry Rich
On 12/20/2022 12:13 PM, Ak O wrote:
I hope you are all well. Thank you for your hard work on this subject.
I am having difficulty understanding how to correctly apply the T. and t.
(tcapdot/tdot) Primitives based on the vocabulary documentation pages.
The concept of threading is new to me. The documentation pages (T./t.)
use
many terms that I am unclear on.
I appreciate your efforts to explain them. Thank you for your help.
Ak.
Vocabulary_tdot Page
Reading from the Vocabulary documentation page tdot (at indentation).
i. t. ''"0 i. 5
++-+---+-----+-------+
||0|0 1|0 1 2|0 1 2 3|
++-+---+-----+-------+
In the context of threading, what is this statement meant to
characterize?
Is there a sentence of the form ,'execute some operation in some distinct
thread (having thread attribute(s)..).'?
[x] u t. n y runs ([x] <@:u y) in an idle thread and returns its
result, which is a pyx. A pyx is a special box. It looks like an atomic
box
and can be used like any other box. When the pyx is opened, the opening
thread will block until the value is available. If the creation of the
pyx
ended in error, that error will be signaled when the pyx is opened.
What is:
->the purpose of a 'pyx'?
Where does a 'pyx' fit into the threading concept?
What is:
->thread?
->idle thread?
How is a thread identified?
The n argument to t. controls execution of the task. The format is
[[<]important parameters][,< keyword[;value]]...
The important parameters are: [threadpool#]
What is:
-> a task?
-> important parameters?
-> [threadpool#]
-> threadpool
-> i. t.(0;('worker'))"_1 i.5
threadpool# indicates which threadpool the task should be assigned
to.
How is a threadpool assigned?
How is a threadpool identified?
Threads are assigned to threadpools when they are created.
How are assigned threadpools identified for created threads?
By default, threadpool 0 is used.
What is the equivalent representation for this statement (i.e [x] u t. n
y
runs ([x] <@:u y))?
One keyword has been defined.
What is a 'keyword' (conceptually and type)?
Is it predefined?
The worker keyword controls whether the task should be executed in
the
originating thread if there is no waiting thread for it to run in.
How does the keyword control the task executing thread?
u t. 'worker'
u t. (<'worker')
u t. ('worker';1)
What differentiates these forms?
Is it always 'worker' a standin?
A few words on cases where one form might be chosen instead of another.
--->
Reference questions
In trying to understand how to build threading structures (threaded
program), three basic models are given:
(https://hpc-tutorials.llnl.gov/posix/designing_threaded_programs)
Quote:
Several common models for threaded programs exist:
Manager/worker: a single thread, the manager assigns work to
other
threads, the workers.
Typically, the manager handles all input and parcels out work to the
other
tasks. At least two forms of the manager/worker model are common:
static
worker pool and dynamic worker pool.
Pipeline: a task is broken into a series of suboperations,
each of
which is handled
in series, but concurrently, by a different thread. An automobile
assembly
line best describes this model.
Peer: similar to the manager/worker model, but after the main
thread creates other
threads, it participates in the work.
Can you please show or diagram the J primitives used to compose the three
models?
--->
- - - Please give a Primitives translation from C to J under the Creating
Pthreads heading, Reference Source (https://randu.org/tutorials/threads/
).
- - -
- - - Please give a Primitives translation from C to J under the Pthreads
Attributes heading, Reference Source (
https://randu.org/tutorials/threads/).
- -
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm