You have an unusual, but interesting scenario. I apologize as I really do
not have the time to think about this properly.

Is this what you are trying to do:

Main - normal J task - for example, in jconsole
 Main J task starts a sub task (which we will call A) with:  p=. (libj,'
JInit x') cd ''

The name spaces of tasks Main and A are separate.

You want to run J code in task A to call J code in task M.

***
An interesting idea. Threads is an additional complication.

If this were allowed to happen, you'd have 2 ways (jconsole keyboard and A
use of JDo) to run sentences in MAIN.
This has some serious problems.

I think if you could get the MAIN jt, you'd just have more problems down
the road.

***
Perhaps other forum members with an interest in this type of problem can
help.





On Tue, Jul 24, 2018 at 9:45 AM, Sergey Kamenev <jsof...@inetstar.ru> wrote:

> Hi, Eric!
>
> Why not just load your main script and then use the functions and variables
>> directly.
>>
>
> You offer me using a trick.
> This trick make debug more complicated.
>
> Perhaps you could give a very simple example of exactly what you want to
>> do. It is not clear what you meany by "return of a session of the main J
>> script'.
>>
>
> Short example:
>
> Typical use:
>
> Initialize the DLL, returning a J session number:
>
>    p=. (libj,' JInit x') cd ''
> ┌────────┐
> │53024912│
> └────────┘
>
> I need this:
>
> p=. (libj,' JCurrSession x') cd ''
> ┌────────┐
> │23452342│
> └────────┘
>
>
> Main script:
> var1=: ...
> var2=: ...
>
> function1=: ...
>
> After I load libj.so:
>
>  (libj,' JDo i x *c') cd p,<cmd             NB. send to J DLL
> ┌─┬────────┬────────────────────┐
> │0 │23452342│  echo var1 function1 var2│
> └─┴────────┴────────────────────┘
>
> In session 53024912 my variables var1 and var2 inaccesible, and function1
> also.
>
> If I'm know session of main script then I can using var1, var2, function1.
>
> *Details about my task:*
>
> I write the optimizer of trade strategy on J - test.ijs script which load
> trade advisers also written in J.
> This is massive computer job requires multiple processes or threads.
>
> I have wanted to use threads in J.
> Linux have libpthread.so
>
> J has support of using shared libraries.
>
> Thread have multiple advantages: memory economy (shared data for all
> threads) and lower CPU consumption against processes.
>
> I want to make the following:
>
> Get libj.so entering address:
>
>     '/lib/libdl.so.2 dlopen x *c i' cd 'libj.so';2
> ┌────────┬───────┬─┐
> │27652176│libj.so│2│
> └────────┴───────┴─┘
>
> Get JDo procedure address:
>
>     '/lib/libdl.so.2 dlsym x x *c' cd 27652176; 'JDo'
> ┌───────────────┬────────┬───┐
> │139689066604876│27652176│JDo│
> └───────────────┴────────┴───┘
>
> Create thread:
> Adr=: 0
>    '/lib/libpthread.so.0 pthread_create x x x x x' cd Adr; NULL;
> 139689066604876; NULL
>
> In this example do not shown hot to pass parameter for JDo. But this is
> possible with function mema and memw.
>
> I need real access for JDo to varibles and function of main script.
>
>
> Sergey.
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to