--- On Mon, 12/31/12, Harley <[email protected]> wrote:
> For those questioning the need for the requirement of > re-entrant code for GLPK, I asked the same > question and Xypron sent this answer to me by email: > > "you are right that multiple processes may run GLPK at the > same time. But many > applications like Apache or Tomcat are multi threaded. So > maybe you would > like to create a webservice offering route optimization by > solving a TSP. You > wouldn't be able to do so with the current GLPK because > Apache has multiple > threads per worker process, and you definitely do not want > to shut down > Apache if one of the TSPs has a problem because a user of > your webservice > came up with some strange input." Putting the GLPK based solver in its own address space by calling fork(2) takes care of the issue w/o the need to modify GLPK at all. The justification for threads is avoiding the overhead of spawning a separate process. In the context presented above that's negligible and almost undetectable in the presence of network latency. Threads are useful if you're trying to speed up single problem solution times by parallelizing matrix operations across multiple cores. However, if you're running multiple problems concurrently, doing that will slow things down by increasing the number of cache conflicts. TANSTAFL! Have Fun! Reg NB: w/ & w/o are far less cryptic than things like TSP, SAT, etc. randomly tossed about as is widely done in OR papers. cf. "The Moon is a Harsh Mistress", R. Heinlein _______________________________________________ Help-glpk mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-glpk
