Hi all:
To the  best of my knowledge, if one thread want to live in system for a long time, it should adopt a policy to give up CPU when there is  nothing to do, and it may be woken up by another thread or signal. 
For example, the main thread is driven by messages. The *Policy* that I mentioned above is that main thread will be blocked if its message queue becomes empty and it will be woken up when some new messages enqueue.
But according to my experiments,  I found there are some threads without processing messages have a long life, they may occupy more than 30 percentage of total execute time(during a certain period). Therefore, what is the *Policy* that makes 
this type of threads fall in sleep or be woken up? In addition, it's apparently that CPU will never become idle if one thread don’t go to sleep. However, the assumption is not true! Could any body give some idea?
Thanks! 
Best regards.
 

liusir.tech