- Home /
Effects of blocking the main thread in Unity
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.
Answer by Landern · Mar 06, 2013 at 08:49 PM
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. :)
Thanks for taking the time to respond.
I am aware of the effects this would have on the user experience. $$anonymous$$y question is not concerned with performance. $$anonymous$$y apologies for not being clear; I will update the question.
Your answer
Follow this Question
Related Questions
Is the Unity API threadsafe? 2 Answers
Problem Using ThreadPool in Unity Android 0 Answers
play animation sequence 3 Answers
Unity Threading Issue: Not able to delegate task 0 Answers
Google Daydream Thread with Unity 1 Answer