【发布时间】:2009-12-20 10:15:40
【问题描述】:
我有几个线程作为主要线程的备份,它们大部分时间都被sem_wait() 阻塞。保留它们是否可以,或者仅在需要执行实际工作时才生成新线程更好?内核是否切换到等待sem_wait() 的线程并“浪费”CPU 周期?
谢谢。
【问题讨论】:
标签: c++ c multithreading
我有几个线程作为主要线程的备份,它们大部分时间都被sem_wait() 阻塞。保留它们是否可以,或者仅在需要执行实际工作时才生成新线程更好?内核是否切换到等待sem_wait() 的线程并“浪费”CPU 周期?
谢谢。
【问题讨论】:
标签: c++ c multithreading
不,任何常见的线程库和操作系统都不会切换阻塞线程(如果它们是设计的话,那将是一个非常糟糕的设计)。但当然,它们仍然会使用内存。
【讨论】:
选择选项 A。
浪费的周期很小。您的线程将始终处于等待状态。
另一方面,启动和停止线程的复杂性,而不是全部启动,可能会严重损害您的程序逻辑。
【讨论】: