comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » IDL and C inter-language communication / call_external()
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: IDL and C inter-language communication / call_external() [message #89108 is a reply to message #89097] Thu, 24 July 2014 15:46 Go to previous message
Craig Markwardt is currently offline  Craig Markwardt
Messages: 1869
Registered: November 1996
Senior Member
On Thursday, July 24, 2014 5:08:53 AM UTC-4, Frink3141 wrote:
> If I understand aright you mean that I call the routine via call_external() with initial value, then it does the first fitting step and ends returning the partial results, IDL plots and executes call_external() again with the last partial results and so on? Okay, this is a possibility, but would involve as far as I see a lot of changes in the C routine. Futhermore I think this would slow down everything a lot.
>
>
>
> I didn't get what you mean by your second suggestion. The "external program" is a kind of deamon with the fitting routine waiting for input?
>
>
>
> My primary idea was to allocate memory for the partial results with idl and pass that via call_external() to C. This way idl has access to the data and could plot it. But there are two problems: First I would have to create another thread for the plotting in IDL. But the major problem is the synchronisation: IDL should only plot after C has written the array and C should only write after IDL has read the array. This would require some kind of mutex-status variables that may be difficult to implement.

You really like to pour gasoline on the fire, don't you? :-) I wish you luck.

My comment about having an external program... At least on Unixy type computers, you can call
SPAWN, 'myprogram', unit=unit
On the IDL side, you have a file UNIT you can read from using READF to monitor the progress of the task.

On the task side, you can print out some kind of progress indicator information that the IDL side can monitor to the standard output. (It is wise to use fflush() so that you don't run into buffering deadlocks.) It can be as simple as printing a "percent done" integer value. But it could be as sophisticated as printing out the numerical values of the fit after each iteration. It would be up to your IDL code to read the file UNIT to retrieve this information so in a timely way, and plot it or do whatever you want.

Criag
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: Generate Same Sequence of Random Numbers in IDL and C
Next Topic: Locating desired values in an array.

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sun Oct 12 02:32:54 PDT 2025

Total time taken to generate the page: 1.68164 seconds