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
- Follow-Ups:
- Re: Re: Multiple threads using Mathlink
- From: PaweÅ Banasik <p.banasik@students.mimuw.edu.pl>
- Re: Re: Multiple threads using Mathlink
- References:
- Multiple threads using Mathlink
- From: Paweł Banasik <p.banasik@students.mimuw.edu.pl>
- Multiple threads using Mathlink