I am investigating whether Unity could be used as an event processor, pulling messages from a queue and going to sleep when the queue is empty.
What are the side-effects of blocking the main thread in Unity? Are there any problems that could arise from intentionally blocking for a long period of time? For example, could the engine state become inconsistent if the main thread sleeps for a significant period of time?
Please disregard the effect blocking would have on the user experience for the purposes of this question.
Thanks in advance.
If you block the main thread it will appear that the engine is frozen and the application needs to be closed, that is a horrible user experience. Use non-blocking code or spawn a new thread with background set to true, don’t try and modify variables from the main thread, delegate back all of your changes and work completed, rinse, repeat, win.
Edit: be aware of some non-blocking code not actually being used on another thread, instead it slices up the cpu allocation for your application(not the entire cpu) which can make the game look slow.
What are you trying to do?
Edit with OP update:
You will probably just have to test it. I can’t think of a reasonable reason why the engine would just take a turd because you sleep the main thread, it should pick up right where you left off regardless if you Thread.Sleep(500) or Thread.Sleep(5000000).
I say test it since think falls into an odd edge case if you are going to pause the thread and resume… this isn’t what 99.9%(made up stat) of the users use the engine for. Try it, the test case would be simple, let us know.