人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 apacheモジュールでプロセス間通信を行う場合に、共有メモリを使うと色々問題がでてくる。 preforkの性質上、複数のapache子プロセスがフォークされており、それらがそれぞれリクエストに対する処理を行うため、共有メモリ領域の書き込み時に衝突が起きたりして、データに齟齬が発生してくる。 それを防ぐのが排他処理だ。 今回は、aprで実装済みのglobal mutexを使って排他制御する方法を説明する。 まずは、グローバでmutexを宣言する。 #include "apr_global_mutex.h" #include "unixd.h" apr_global_mutex_t *mutex; 次に、apache起動時のpost_confi