|
[Date Index]
[Thread Index]
[Author Index]
Re: Multiple threads using Mathlink
- To: mathgroup at smc.vnet.net
- Subject: [mg88808] Re: [mg88775] Multiple threads using Mathlink
- From: Steve Wilson <stevew at wolfram.com>
- Date: Sat, 17 May 2008 05:29:54 -0400 (EDT)
- References: <200805160932.FAA01047@smc.vnet.net>
Pawel,
Generally speaking it is safe to use MathLink with threads. Here are
the relevant stipulations:
1. Do not concurrently access the same MLENV object from more than
one thread at a time. This means that you do not want multiple
threads invoking any of the MLOpen* functions using the same MLENV
object simultaneously. You will need to protect access to the MLENV
object with a thread locking mechanism.
2. Do not concurrently access the same MLINK object from more than
one thread at a time. You will need to protect access to the MLINK
object with a thread locking mechanism.
To answer your question about MathLink and Kernels, you should
understand the following about MathLink. MathLink does not
specifically create Kernel processes. MathLink creates a
communication link between one process and another process. MathLink
supports the ability to start the other process, but fundamentally
what you are dealing with is a full duplex communication link between
two processes. MathLink links function in a one-to-one paradigm,
thus one link can start and communicate with one process.
Steve
Senior Network/System Protocol Developer
Wolfram Research Inc.
On May 16, 2008, at 3:32 AM, Pawe=C5=82 Banasik wrote:
>
> Hello,
>
> I have a question regarding multithreaded access to Mathematica via
> MathLink.
>
> I'm developing a set of webservices for use with the Taverna Workbench
> (taverna.sourceforge.net), a computational biology tool. These
> webservices
> call Mathematica to perform some computations. Obviously, each
> webservice
> invocation creates a new thread. As I'd like the Mathematica
> environments
> belonging to different threads to be completely separated one from
> another,
> I've implemented a mechanism which creates a new MathLink object for
> every
> thread. Unfortunately, this leads to serious problems, including an
> application service crash, occuring from time to time. Apparently,
> this is
> some kind of a concurrent access problem - it doesn't happen when I
> run only
> one thread at a time, with subsequent invocations separated by a few
> seconds.
>
> Perhaps there is a problem with my understanding of the relation
> between
> MathLink and Mathematica kernels? Is it true that each Mathlink object
> creates a separate kernel process? If not, how to achieve such
> behavior? Do
> the MathLink native libraries support multithreading?
>
> Thank you for your help,
> Regards,
> Pawel Banasik
Prev by Date:
Re: Re: Replace non-numeric values in a list
Next by Date:
Re: Traditional Ordering of Equations
Previous by thread:
Multiple threads using Mathlink
Next by thread:
Re: Re: Multiple threads using Mathlink
|