Coroutine makes unity to freeze till it is done

Hey! Why would a coroutine make Unity to stop responding till it finishes?
So i have a MapGenerator script at the Start() a coroutine is called StartCoroutine(GenerateMap()) the GenerateMap() calls several heavy functions (many while loops running) and takes several seconds to finish so the idea was to let it run at several frames till it finishes its job but it makes Unity to stop responding till it is done. Any ideas what is going wrong or any suggestion to go around that? There is nothing else called out of the GenerateMap() only an OnDrawGizmos() but it doesn’t seem to cause the problem. The code is fairly large so i won’t post it.

Calling a coroutine is only the first step, since it’s also running on the main thread. For the engine to hand it some execution time you need to call a yield every now and then eg:

yield return null; //gives Unity one frame
yield return new WaitForSeconds(xSeconds);// as many frames as Unity managed to execute

in essence you’ll have to run these after x execution steps.