主线程在基于线程池/任务的应用程序中做什么?

What does the main thread do in a thread pool /tasked based application?

一般来说,主线程在基于线程池/任务的应用程序中做什么或应该做什么?任务被添加到队列中,主线程决定执行哪个任务,一旦任务开始工作,主任务是否应该选择一个任务来执行?它应该完全休眠以避免不必要的旋转,还是错过 work/tasks 的风险?

在伪代码/这是我的理解:

main():
    # Lets say there are 4 threads in the pool
    init_thread_pool(4)
    while (1):
      # could either run (have the logic) in main() or run_thread_pool() 
      # Which task should run, are there any tasks at all
      run_thread_pool_tasks()
      # Should anything be done here? run a task? sleep? spin?
    

主线程执行程序员为其编写的任何代码。我见过 Java Swing 应用程序,其中主线程在启动时创建一些 GUI 对象,然后它就结束了——让 Swing 接管。如果一个程序需要一个 long-运行 线程,它可以使用主线程。在某些框架中,程序在 main() returns 时结束,而且我看到过 main() 只是在初始化其他所有内容后循环调用 sleep() 的程序。