Welcome to the Parallax Discussion Forums, sign-up to participate.
- Requires Catalina 4.5, which has just been released to fix some issues found when using locks in a multi-threaded environment. - Source code is now included. The parallelizer is an AWKA script, and must be compiled with awka 0.7.5. It could be modified for other awk scripting implementations if required. The script is MIT licensed. - More error checking and more warning messages. - The factory related pragmas are now all optional. Factories will be defined and started automatically if there are no explicit factory or start pragmas specified. Now, only one worker pragma, and one begin and end pragma, may be required to parallelize a serial program. - New conditional options for worker and wait pragmas. In worker pragmas, conditionals can be used to control the output of variables, which will only take place if the condition is true when the worker completes. In wait pragmas they allow the wait to be terminated early if a specified condition is true. In both cases the condition can be any arbitrary boolean expression, but is normally something that is signaled by a worker thread to indicate that the main thread should continue, even if there are still worker threads yet to complete. - New foreman option on the factory pragma, which allows you to use your own foreman function. This may be useful if your program is already multi-threaded and you already have a thread function that can be used as a foreman function. - New memory management option, which can be specified on any pragma. Memory management for factories and workers can now be specified as either static or dynamic. No matter where it is specified, the option currently applies to ALL workers and factories. Static is faster, and has smaller code sizes, but all memory is pre-allocated at compile time, which may be wasteful (e.g. if you start and stop different factories at different times, all memory for all of them will still be pre-allocated when static memory management is used. In such cases, dynamic memory management may be preferable - but it may be slower and also require more code space, because the malloc() and free() library functions must be included). - New and modified test programs to demonstrate the new options.