あぁ、でもこの場合、少なくてもマップ移動はまとめられるね。
ヘンテコ擬似コードだけど、こんな感じ?(描画はメインファイバ側でやるという前提)

void MapMove() {
 while(1) {
  //方向キーが押されるまで待つ
  while (!CheckHitCursorKey())
   SwithFiber(mainFiber);
  MoveMap(GetKeyState());//スクロール方向を決める処理

  //ここからスクロール処理
  for (int i = 0; i < MAP_CHIP_SIZE; i++) {
   ScrollMap();//1ドット分スクロール
   SwitchFiber(mainFiber);
  }
 }
}

この場合にまとめるのが正しいかは議論ありそうだがそれはおいといて、例としてね。