如何确定子线程的总数?

时间:2011-07-26 04:19:04

标签: c++ c linux networking

我正在进行Linux服务器编程,我不确定我的线程池的子线程数是否合适。这些线程正在进行实际工作,包括解析和数据处理等。如果我的服务器有8个内核,那么我应该生成的子线程数是多少?提前谢谢..

1 个答案:

答案 0 :(得分:1)

如果你质疑你实际拥有多少线程,那么man ps将为你提供许多选项来显示正在运行的线程 - 你需要做的就是计算它们。

如果您的问题是关于应该创建多少个线程,那么这完全取决于您的应用程序以及它的作用。如果每个线程都没有IO和syncronouz调用,而它所做的只是数字运算 - 那么你应该有不超过8个线程(每个核心一个)。但是,如果您的应用程序执行的任何操作会导致它等待外部IO,那么您可以从中获益更多。我说可以因为它完全取决于你的应用程序是如何构建的 - 在大多数情况下你需要进行实验;通常首先使用8个线程进行测试,然后查看每秒可处理的请求数,然后增加线程数并再次运行实验。然后将结果绘制成曲线并找到额外线程不添加(或很少)附加值的最佳位置 - 这将是您应该配置的线程数。这是因为假设您没有引起其他瓶颈,例如内存/交换,您可能希望避免这种情况