in reply to Re^2: Multi-thread database script (spawn)
in thread Multi-thread database script

The problems with Perl 5 threads are not due to the developers being incompetent nor for lack of effort. Any improvements to the Perl 5 threading model are going to be small improvements because the big problems are fundamental. You can't just take a monolithic system like Perl 5 and throw threads into the design as an after-thought. And Perl 5, unluckily, is an especially good example of a system that strongly resists the addition of good threading.

At this point, I suspect that you'd often get better performance on Unix Perl if threading was implemented using fork with IPC used for sharing variables (especially if mmap were used). That is how fundamentally unlike threads the current Perl 5 threading model has become after years of trying and failing to make Perl work with a more thread-like model.

- tye        

  • Comment on Re^3: Multi-thread database script (threads)

Replies are listed 'Best First'.
Re^4: Multi-thread database script (threads)
by jplindstrom (Monsignor) on Apr 25, 2007 at 13:47 UTC

        So you've used the referenced module, forks ? Your use of the plural and my expectations both lead me to suspect that you misunderstood the node you replied to and didn't follow the offered link.

        On a platform with real fork support, I'd expect the technique outlined in forks to be more memory efficient and, at least in some respects, faster than Perl threads (and not terribly slower in any respect), and perhaps less buggy. Note that this has everything to do with how poorly Perl's particular implementation of threading is, not a problem with threading in general.

        Now, trying to use this module on Win32 would just be silly (unless using cygwin Perl). It'd be using fork which Perl turns into a bad emulation of fork(2) using a bad implementation of threads and then the module uses some IPC (which Perl might also be emulating) on top for sharing variables. So emulating Perl's bad threads by using a badly emulated fork that still uses Perl's bad threads. Yeah, I'd expect that to be awful. So that's another possible explanation for your reaction.

        - tye