On Fri, Oct 3, 2014 at 9:28 AM, Erich Steinböck <erich.steinbo...@gmail.com>
wrote:
> benefit from multiple cores is on calls to code outside the interpreter
>> If all of your work is being done directly in oorexx code, there's little
>> benefit to doing them in multiple threads
>>
> OK, moving the task into a floating method and calling it (from within the
> concurrent methods) via …
>
> 'rexx -e "' .methods['WORK']~source~makeString(,';') '"' Start Step
>
> … works fine and will utilize all cores.
>
> - Does there exist a better (faster) means to start a new interpreter
> instance except via OS command "rexx -e"?
>
>
Not really. A new instance would need to run in a new process.
>
> - As the return code seems to be a very limited way (-32768 .. 32767)
> to communicate back results, what other (fast) options do we have (besides
> file I/O and queues) for interpreter <-> interpreter communication?
>
> files and queues are basically it for cross-process communication.
Rick
> Thanks!
>
> On Fri, Oct 3, 2014 at 2:25 PM, Rick McGuire <object.r...@gmail.com>
> wrote:
>
>> You can't really. The oorexx multithreading is a cooperative one where
>> only one thread of Rexx code runs at any one time. The only time you would
>> really benefit from multiple cores is on calls to code outside the
>> interpreter. Once a thread makes an external call (for example, to an
>> external code library), another Rexx thread is freed up to run and the two
>> threads can run concurrently. If all of your work is being done directly
>> in oorexx code, there's little benefit to doing them in multiple threads.
>>
>> Rick
>>
>> On Fri, Oct 3, 2014 at 8:20 AM, Erich Steinböck <
>> erich.steinbo...@gmail.com> wrote:
>>
>>> In order to speed up some rather lengthy processing I've moved the task
>>> into its own ::method Work within ::class Worker. I'm then starting a
>>> number of worker threads with …
>>>
>>> Threads=.array~new
>>> do Core=1 to Cores
>>> Threads~append(.Worker~new~start('WORK',Core,Cores))
>>> end
>>>
>>> … and collect their results by …
>>>
>>> T=0
>>> do Thread over Threads
>>> T+=Thread~result
>>> end
>>>
>>> I can see that the threads are running concurrently, their results are
>>> fine, but all threads seem to be running on a single core only,
>>>
>>> How can I utilize all existing cores on a multi-core CPU?
>>>
>>>
>
> ------------------------------------------------------------------------------
> Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
> Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
> Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
> Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
>
> http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
> _______________________________________________
> Oorexx-users mailing list
> Oorexx-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-users
>
>
------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Oorexx-users mailing list
Oorexx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-users