2011-12-06 12 views
0

MS Windowsでのみ動作するApacheモジュールを開発します。Apacheモジュールでワーカースレッドを1つだけ作成する方法は?

パーマネントシステムの監視タスクを実行し、グローバル変数に結果を格納する、1つのaddidtionスレッドを生成する必要があります。これらの変数は、後続のHTTP GET要求によって読み取られます。

私はhThreadは、モジュールのグローバル変数、 ではなく一つの追加のスレッドで私は2つを得る

if(hThread == 0) { 
     print(L"creating thread\n"); 
     hThread= CreateThread(0, 0, thread, 0, 0, 0); 
     if(hThread != 0) { 
      print(L"thread created\n"); 
     } else { 
      printLastError(); 
     } 
    } 

を使用して

static void ite_mymodule_register_hooks(apr_pool_t *p) 

でスレッドを開始? それを防ぐには?

答えて

0

私はそれを理解しました。

  • マスタープロセスと
  • ワーカープロセス:Widnws apacheの下で

    は、2つのプロセスを開始します。

各モジュールのdllは、マスタープロセスとワーカープロセスの両方にロードされるため、2つの独立したモジュールグローバル変数があります。

各モジュール「static void ite_mymodule_register_hooks(apr_pool_t *p)」は2回呼び出されます。

しかし、私はite_child_initと呼ばれるものがap_hook_child_init(...)に渡され、子プロセスに対してのみ呼び出されるので、この関数でスレッドを開始する必要があります。

関連する問題