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