我对FastCGI的工作原理有点困惑.我的程序真的只有一个实例正在运行,还是有一些神奇的线程正在进行?这很重要,因为如果我的数据结构具有主循环之外的范围,我需要知道这些数据结构是否需要是线程安全的.
编辑:我的应用程序是在Perl中,这是我的apache2配置:
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi .fcg
FastCgiServer /usr/lib/app/process.fcg -idle-timeout 60 -processes 1
</IfModule>
Run Code Online (Sandbox Code Playgroud)
为了清楚我要问的是什么......对于这段代码:
use CGI::Fast qw/:standard/;
my %sharedHash;
while (new CGI::Fast) {
# do stuff with %sharedHash
}
Run Code Online (Sandbox Code Playgroud)
"do stuff"部分是安全的还是一些"多线程魔法"正在进行,这可能意味着多个线程同时执行"do stuff",从而破坏%sharedHash?
FastCGI 本身只是 Web 服务器和应用程序之间的接口。您的应用程序可以是多线程的(Java 几乎都是这种情况,通常是 Python),或者以异步、事件驱动的风格编写(Python、Node.js 等中的 Twisted)。如果是前者,那么您需要确保对全局状态结构的访问正确地线程同步。
来自FastCGI 白皮书: 架构独立性。CGI 不依赖于任何特定的服务器体系结构(单线程、多线程等)。
| 归档时间: |
|
| 查看次数: |
2788 次 |
| 最近记录: |