From: M J. <mje...@ho...> - 2000-05-03 03:39:10
|
Have a C program that loops through iterations improving on an objective until ending conditions are met. I hope to develop a GUI so user can adjust parameters and view progress (e.g. graphs that get updated each iteration) on the fly while the program is iterating. For example, during 1 iteration the processor may be busy cruching for a minute, then the intermediate solution is updated and the next iteration is begun. This may go on for hours. Currently communicate with program via ASCII text files that get read in each iteration and program takes new parameters/instructions. I downloaded FOX and checked out a bunch of the test programs. All looks great. However, I'm having trouble figuring out how an iteration-based program would work in this object oriented c++ world. The program needs to iterate while all the GUI objects are funcioning and communicating with it. I don't have much experience with C++, which may be the main conceptual problem. Is FOX likely to work to build a GUI for this type of problem. References for developing this type of program would be appreciated. Thanks, MJester ________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com |
From: Daniel G. <geh...@ep...> - 2000-05-03 08:53:07
|
MJester, This case is usually handled by using multiple execution threads. [Threads are little bit like mini-programs within a single process. Instead of running one program for the GUI, and another to crunch the numbers, you would use the main thread to display the GUI, and create a "worker" thread for your calculations. Since the threads of a same process share their memory space, communication is very easy (global variables, ...).] FOX, as a GUI library, has no direct threading support. But you can use it in conjunction with the omniThread library (LGPL license), which comes as a separate module with the OmniORB2 library. http://www.cam-orl.co.uk/omniORB/index.html - Daniel > -----Original Message----- > From: fox...@li... > [mailto:fox...@li...]On Behalf Of M Jester > Sent: Wednesday, May 03, 2000 5:30 AM > To: fox...@li... > Subject: [Foxgui-users]FOX work here? > > > Have a C program that loops through iterations improving on an objective > until ending conditions are met. I hope to develop a GUI so user > can adjust > parameters and view progress (e.g. graphs that get updated each > iteration) > on the fly while the program is iterating. For example, during 1 > iteration > the processor may be busy cruching for a minute, then the intermediate > solution is updated and the next iteration is begun. This may go on for > hours. Currently communicate with program via ASCII text files > that get read > in each iteration and program takes new parameters/instructions. > > I downloaded FOX and checked out a bunch of the test programs. All looks > great. However, I'm having trouble figuring out how an iteration-based > program would work in this object oriented c++ world. The program > needs to > iterate while all the GUI objects are funcioning and > communicating with it. > I don't have much experience with C++, which may be the main conceptual > problem. Is FOX likely to work to build a GUI for this type of problem. > References for developing this type of program would be appreciated. > Thanks, MJester > ________________________________________________________________________ > Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com > > > _______________________________________________ > Foxgui-users mailing list > Fox...@li... > http://lists.sourceforge.net/mailman/listinfo/foxgui-users > |
From: Jeroen v. d. Z. <jv...@cf...> - 2000-05-03 13:30:11
|
On Tue, 02 May 2000, you wrote: > Have a C program that loops through iterations improving on an objective > until ending conditions are met. I hope to develop a GUI so user can adjust > parameters and view progress (e.g. graphs that get updated each iteration) > on the fly while the program is iterating. For example, during 1 iteration > the processor may be busy cruching for a minute, then the intermediate > solution is updated and the next iteration is begun. This may go on for > hours. Currently communicate with program via ASCII text files that get read > in each iteration and program takes new parameters/instructions. > > I downloaded FOX and checked out a bunch of the test programs. All looks > great. However, I'm having trouble figuring out how an iteration-based > program would work in this object oriented c++ world. The program needs to > iterate while all the GUI objects are funcioning and communicating with it. > I don't have much experience with C++, which may be the main conceptual > problem. Is FOX likely to work to build a GUI for this type of problem. > References for developing this type of program would be appreciated. > Thanks, MJester This should be possible. There as I can see several ways to do this; in order of increasing coding complexity: 1) Have one iteration run as a GUI idle callback. Each time the GUI is about to block for events, it will make one callback to your code to run one iteration. Of course, when the callback takes more than a fraction of a second to run, the GUI will appear ``dead'' when the callback is being executed. 2) Keep your C program as a separate process, and establish a pipe or socket between it and the GUI. You can use FXApp::addInput() to register callbacks to occur when the pipe/socket becomes signalled, and this callback can then read or write to the pipe to communicate with the batch process. [this is actually the one I would recommend under UNIX/X11]. 3) You could run the batch computation as a thread in the same program as the GUI. You would still have to create some sort of synchronization object to prevent the compute thread and the gui thread from treading on each other's toes. Let the compute thread NOT perform any GUI operations, but just be responsible for its compute job [this is the solution I recommend under Windows, as threads under Windows are very lightweight and NT is not so great at context switching between processes as it is switching between threads; if you're on UNIX, and your system supports POSIX threads, then it might be a good solution there too]. Hope this helps, - Jeroen -- +----------------------------------------------------------------------------+ | E-Mail : jv...@cf... `:::' ....... ...... | | USMail : 215 Wynn Drive, ::: * `::. ::' | | Huntsville, AL 35805 ::: .:: .:.::. .:: .:: `::. :' | | Phone : (256) 726-4820 ::: :: :: :: :: :: :::. | | Fax : (256) 726-4806 ::: .::. .:: ::. `::::. .:' ::. | | WWW : http://www.cfdrc.com .:::.....................::' .::::.. | +----------------------------------------------------------------------------+ | Check out the FOX GUI toolkit: | | U.S.A. [Official]: http://www.cfdrc.com/FOX/fox.html | | ftp://ftp.cfdrc.com/pub/FOX | | Europe [Mirrors]: ftp://SunSITE.Informatik.RWTH-Aachen.DE/pub/Linux/fox/ | | ftp://imssun1.epfl.ch/pub | +----------------------------------------------------------------------------+ |