このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

CGI と、ACGI の違い

発言者:奥脇
( Date Thursday, February 13, 1997 22:35:11 )


CGI と、ACGI の違いについて質問させてください。

CGI では、CGI の処理が終わるまで、サーバー側が処理を停止しており、
ACGI では、CGI の処理終了を待たずに、サーバーが動いている、
と、とりあえず理解しています。
(詳しくどうなっているのかは、良く分かっていないのですが。)

そこで、質問なのですが、
複数の人が同時的に書き込もうとする事が想定されるような、
掲示板システムのような場合に、ACGI を用いてもよいのでしょうか?
(同一ファイルへの、書き込みが同時に発生するような事態が恐いのですが)

また、ACGI を使うとまずいような状況というのには、
どのような場合があるのでしょうか?

#FAQだったらすいません。

前薗 健一 さんからのコメント
( Friday, February 14, 1997 00:39:32 )

AppleScript での処理は田中さんに任せるとして (^^;
C/C++ では Event Semaphore, Mutex Semaphore というセマフォを
使って排他処理を行います。Java の場合は、Syncronized() という
構文を使って排他処理を行います。

田中求之 さんからのコメント
( Friday, February 14, 1997 02:37:47 )

AppleScript の場合は、ファイルの排他処理を行う必要はありません。
というのも、AppleScript は Multi-thread では動きませんから。

一つの ACGI に対して複数の処理が同時に指示された場合、AppleScript
では、後になったものほど優先されるようになっています。

これは、re-entrancy を保証する(別の観点から言えば再帰呼び出しを
行えるようにする)ために、AppleScript がこのような仕様になっている
ためです。

ですから、AppleScript の ACGI では、実際に処理が行われるのは、常に
1つのプロセスに限定されますので、ファイルの排他処理などは考える必要が
ないのです。

Frontier のように、Multi-thread で走るスクリプティング環境で CGI
を作った場合は、当然のことながら、ファイルの排他処理を行う必要があります。

奥脇 さんからのコメント
( Friday, February 14, 1997 23:13:58 )

なるほど。
逆にいうと、AppleScripte などの、Multi-thread では走らないような環境では、
ACGI を使っていて、まず問題はないというわけでね。

安心できました。