Re: How to interrupt a running evaluation in MathLink
- To: mathgroup at smc.vnet.net
- Subject: [mg16917] Re: How to interrupt a running evaluation in MathLink
- From: tobiasoed at my-dejanews.com
- Date: Thu, 8 Apr 1999 02:32:30 -0400
- Organization: Deja News - The Leader in Internet Discussion
- References: <7e9olb$3ku@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, Interrupts over mathlink are poorly documented. There are discussions going on about this in other threads. There is a mathlink function you can call: MLPutMessage(link,integer) as far as I know, this is undocumented. Symbolic constants for the second argument are defined in mathlink.h and their names are MLInterruptMessage, MLAbortMessage etc... One of the problems I have with this is that the kernel does not answer in the same manner when waiting for input or evaluating. I do not know how to avoid a race conditions that may occure. Also depending on how you start the kernel the MLPutMessage works or fails-see another of my posts to the newsgroup (it's recent, so it should still be there). Hope this helps Tobias In article <7e9olb$3ku at smc.vnet.net>, rmille1 at aol.com (RMille1) wrote: > I'm using Mathlink in my C program to start a Mathlink kernel and send this > expression to be evaluated: > > N[ReplaceAll["Some expression",x->"some variable"]] > > Everything is working otay. However, occasionally an expression I send causes > the kernel to evaluate for longer than I would like it to. So what I want to do > is interrupt the evaluation and abort just as it would from a command line with > Ctr-C and abort, but through MathLink. Here's the snippet of code that will > call it: > > pkt = MLFlush(Link); > interval = 0; > while((!MLReady(Link))&&(interval<=10)) > { > interval++; > Sleep(500); > } > > if(interval > 10) > { > dump = fopen("dump.txt","a");//test > fprintf(dump,"\n/////////////////////Restarting > Kernel///////////////////\n\n");//test > fclose(dump); //test > > ***** Interrupt and Abort here. ************ > > return 0; > } > > I know there's a way to do this with MLAbort from the kernel, but not the other > way. Also I didn't use Loopback or mprep, > > One other thing. I found the MathLink Tutorial by Todd Gayley to be the best > resource for learning how to use MathLink to start and run a Math kernel from > C. However, it seems a little dated. I'm using > > char *argv[5] = {"-linkname", > "c:\\progra~1\\wolfra~1\\mathem~1\\3.0\\math -mathlink", > "-linkmode", > "launch", > NULL}; > with MLOpen(), and that doesn't jive with the documentation in Mathematica 3.0 > > Is there a more up to date version available? > > -----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own