通常、X アプリケーションはイベント駆動型です。つまり、X アプリケーションは、ユーザーがインタフェースで何らかの処理を行う際に発生するイベントに応答します。
アプリケーションが、イベントモデルを妨げないバックグラウンド処理を実行する必要がある場合には、作業手続きの使用を検討してください。
作業手続きは、X イベント待ち行列に現在何もない場合に、Xt によって呼び出される関数です。
作業手続きは、次の手続きによってツールキットに登録されます。
XtWorkProcId XtAppAddWorkProc(XtAppContext app_context, XtWorkProc work_procedure, XtPointer client_data)この関数によって返される不透明ハンドルを使用すれば、後で作業手続きの待機を解除できます。このような作業手続きは次の書式になります。
Boolean MyWorkProcedure(XtPointer client_data)次のユーザーイベントがないときにユーザー指定の手続きが自動的に呼び出されるようにするには、その手続きで「false」を返してください。また、再呼び出しを望まない場合には「true」を返してください。
作業手続きをシステムから削除するには、次の関数を使用します。
XtRemoveWorkProc(XtWorkProcId id)作業手続きの目的は、ユーザーを妨げずに高速でバックグラウンド処理を行うことです。作業手続きで「War and Peace」と書いた場合には、ユーザーの手続きが終了するまで、インタフェースを遮断することになります。
作業手続きの詳細については、X マニュアルを参照してください。
関連項目: