Dan Nagle's Technical Site

fthreads FAQ

Home --> Free Source Code --> fthreads --> FAQ

fthreads FAQ

Why not simply call the Win32 API directly?

You can call the Win32 API directly from Fortran, but it's not simple and since each compiler supports calls to the Win32 API a little differently, it's not portable either. Do you know about Windows handles? Thread Ids? Thread Names? Do you want to know all about them? Remember, the Win32 API is made to be called from Microsoft Visual C++. fthreads is designed to make using threads from Fortran simple and easy. fthreads takes advantage of Fortran 95 modules for compile-time checking of procedure calls, so many possible errors will be caught then, and not as the cause of some hard-to-reproduce error during execution. If you'd rather code Fortran, and leave the Windows threading to someone else, use fthreads.

Can fthreads handle my code from the supercomputer?

Yes, fthreads is designed to make porting multitasked codes from supercomputers straight-forward. The familiar barriers, events and mutexs are all present in fthreads. You won't find barriers in the raw Win32 API. A full suite of critical operations is a part of fthreads, so your code will take the best advantage of every feature supported by Win32 threads.

I've heard that debugging parallel applications is difficult and tricky. What support does fthreads have for debugging?

fthreads has a trace facility to record the order of fthreads routine's actions. The programmer declares a trace variable, and passes it to any routine whose activities are of interest. It's an optional variable, so it needn't be used when it isn't needed. Any routine of the application can also post a message to the trace buffers, so the program's actions between fthreads calls can also be reviewed. One or several trace variables may be declared in any application, and they may be used under protection of a mutex (which is optional and built-in to the trace variable) if several threads are to be followed using one trace variable. The trace variable's messages are printed to a program-defined unit whenever needed, that unit may be flush()'ed if necessary to preserve the trace data.

I don't have much experience with parallel programming, but my program needs more speed than it's getting from the PC. What can fthreads do for me?

You can sign up for our fthreads Workshop. We'll deliver it at your location, with sufficient interest. The first part of the Workshop is lecture, then we'll spend the rest of the time working on your code.

Back to the Top

If you have any questions, please E-mail me for further discussion.


Home - Fact Sheet - Free Source Code - Fortran Links - Email me

Back to the Top