コールバック (情報工学)
以下のC言語コードは、配列を検索して 5 より大きい値を探す処理を行うものである。まず、イテレータを使ったコードを示す。
次に、コールバックを使ったコードを示す。
コールバック関数 search の if 文の条件を変更すれば、「5より大きい」以外の要素を検索するのにも使える。traverseWith には、コールバックが自身の目的のために受け取る追加の引数 param がある点に注意されたい。通常のコールバックでは、そのような引数をスコープ外のアプリケーションデータへのポインタに利用する。これは静的スコープ方式の言語(C や C++)でのみ必要とされる(ただし、C++ を含めたオブジェクト指向言語には別の解決策がある)。動的スコープの言語(関数型言語など)ではクロージャによって自動的にアプリケーションデータへのアクセスが可能となる。例として同じプログラムを LISP で書いた場合を示す。
この場合、コールバック関数は使う時点で定義されており、"index" を名前で参照している。これらの例では同期に関する考慮は省略されているが、traverseWith 関数を同期できるように対処するのは容易である。さらに重要なことは、同期するかしないかをその関数の修正だけで対処できる点である。