> On 28 Jan 2019, at 23:00, Paul B. Henson <hen...@acm.org> wrote:
>
> On 1/28/2019 1:53 PM, Mark Blackman wrote:
>> https://perldoc.perl.org/threads.html#WARNING Threads are discouraged in
>> Perl these days
>
> Yes, that is indeed what the documentation says; however, there is a far cry
> between "Perl is single-threaded by design and history and has no reliable
> support for threading" and "use of threads is discouraged in perl".
>
> Looking back to the original discussion that led to that caveat
> https://www.nntp.perl.org/group/perl.perl5.porters/2014/03/msg213382.html a
> good summary of why it is there is:
>
> "The patch came about because unmanaged expectations of support are causing
> social problems"
>
> And further discussion about it https://www.perlmonks.org/?node_id=1107534
> has a similar insight:
>
> "that this particular formulation is just smoke and mirrors to repel
> 'annoying newbies"
>
> Then in this bug discussing the verbiage
> https://rt.perl.org/Public/Bug/Display.html?id=133021 a developer comments:
>
> "The fact is that threads work, they are maintained, and they currently do
> not have any bugs preventing their use."
>
> Basically, perl threads are heavyweight, not lightweight, and use of
> non-thread safe Perl code whether your own or in third-party modules will
> cause potentially nondeterministic problems. The warning is basically there
> to scare away people who don't have sufficient expertise to make it work and
> will likely come complain and ask for help with something the developers
> don't want to have to explain over and over again.
>
> Back when I was running DCE/DFS and maintaining the perl modules on top of
> that, I used threaded perl heavily with no issues. As long as the mechanism
> of and caveats regarding Perl threads are understood, and there is a
> justifiable reason to be using them rather than some other construct,
> discouraged is not deprecated nor unavailable/unreliable.
"Threads are implemented in a way that make them easy to misuse." == "single
threaded by design” in my book, but your mileage may vary. I believe threads
were retrofitted to Perl and I see very little use of threads in the wild
myself. Relying on threads in Perl with real-world third-party XS modules that
aren’t thread-safe is equivalent to unreliable. Base Perl might be safe enough,
but nobody runs real-world apps with pure Perl alone IME.
I am glad you made threads work well in production, but I suspect you’re in a
minority.
- Mark