in reply to Re^4: Using threads to run multiple external processes at the same time
in thread Using threads to run multiple external processes at the same time
The manager thread uses Storable to create work units from the dataset arrays; the frozen arrays are placed on the input queue. These are fairly large.
You shouldn't create the subsets in the main thread and queue them to the workers. This is far too costly.
Better:
As they will only be reading that array, no locking is required.
Unless there is a real need to pass the results back to the main thread, have them finish dealing with them locally before going back for a new criteria set.
This way, your workers won't be sitting around idle while your main thread is performing the subsetting for all of them. And you won't be churning over costly shared resources by enqueuing and dequeuing large serialised (storable) subsets.
Let the workers do the work; let the manager sit back and manage :)
|
|---|