http://www.perlmonks.org?node_id=1050202


in reply to Re^6: [FCGI.pm] - not threads-safe?
in thread [FCGI.pm] - not threads-safe?

why there is no sense to use FastCGI with threads?

Because FastCGI and FCGI have been developed to expect the forking model -- ie. separate processes with no shared state. They therefore have never been designed to be thread-safe.

That's not to say that a FastCGI-style of operation -- persistent perl instances servicing many serial connections -- wouldn't be possible; and perhaps even effective; but it would need to be written from the ground up to understand the environment it is operating in and be thread-safe from the get-go.

It would be a different animal with different requirements and you will not get anywhere trying to slap threads on top of FCGI.

If you need more concurrency, start more FastCGI handler processes. That's the way it is designed to work.

What is the difference between threads and forked processes in this context

Sorry to put it this way, but if you do not understand that difference; you should not be using threads.

Please, explain in few words.

Not possible; which I why I suggested you go do some reading.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^8: [FCGI.pm] - not threads-safe?
by zdm (Beadle) on Aug 20, 2013 at 17:37 UTC

    FastCGI server - is just a tcp server with own communication protocol, like many others. It does not matter how it was designed more than 20 years ago, when perl has no ithreads and apache can run only cgi scripts.

    Problem not in incorrect FastCGI usage and misunderstanding FastCGI specification, but in FCGI.pm implementation, that does not meet the modern requirements.

    In context of this task there is no difference between threads and processes. I don't use shared variables, etc...

    Please, suggest solution to shutdown thread correctly, if you know how.

    Thanks.
      Problem not in incorrect FastCGI usage and misunderstanding FastCGI specification, but in FCGI.pm implementation, that does not meet the modern requirements.

      Then go ask the authors and maintainers of FCGI to re-write their perfectly working module to meet your "modern requirements".

      But be warned: they'll laugh their heads off at your suggestions and requirements. The idea of mixing FastCGI with threading is stupid.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.