07/12/15 22:33:07 dW/LIK6y
>>44
説明しよう!
>コールバック=何かをきっかけに呼び出される
まさにその通りだ!!
コールバック関数とは関数ポインタを呼び出し側に登録しておき
適宜呼び出される方式だ
この方式はタスクシステムにも採用されている
タスクヘッダには初期値としてタスクエンド(Cでは大抵NULLだろう)を示すポインタが入っている
図1.タスクヘッダ → タスクエンド
ここにタスクを登録していくことで呼び出される関数が増えていく
図2.タスクヘッド → タスク1 → タスク2 → タスクエンド
こうして生成されたタスクリストのタスクはタスクループで順番に呼び出されていく
図3.タスクループ
↓
タスクヘッド → タスク1 → タスク2 → タスクエンド
以上のような構造からタスクシステムはコールバック関数であるといえる
コールバック関数に比べてタスクシステムを特徴づけているのは次の3点だ
1.呼び出し側と呼び出され側が1対多である
2.呼び出し側は機能を持たない
3.呼び出され側がさらに呼び出され側を登録することができる
以上の特徴により、動的に機能を拡張し、相互に連携することが可能になったのである