C线程池效率

标签 c multithreading pthreads threadpool

Possible Duplicate:
How many threads is too many?

我有一个大for循环,我希望将每个项目传递给线程上的函数。我有一个一定大小的线程池,我想重用线程。最有效的方法是什么?

线程池最有效的大小是多少?或者至少解决这个问题的最佳方法是什么?

pthread_t thread_id[10];

int i;
for(i = 0; i < 10000000; i++) {
   pthread_create(thread_id[?], NULL, threadFunc, params[i]);
}

最佳答案

线程太少意味着浪费性能机会,太多线程会浪费每个线程消耗的资源,并且会因线程之间的争用而降低性能。我会使用测量值来看看什么数字效果最好。只是好奇,您是否有理由希望每次迭代都是一个新线程?

关于C线程池效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6024037/

相关文章:

multithreading - 在不涉及先前数据计算的情况下更改变量是否是线程安全的?

c - 如何在C语言的二进制文件中插入\0

java - 将迭代器转换为流并调用并行,转换是否在共享线程池线程上完成?

c - 使用互斥量时 stdout 中没有输出

c++ - 如何使用 vtk 实时可视化在另一个线程中运行的计算

pthreads - 在MingW下编译简单的pthread代码时出现链接器错误

c - 如何在 Visual Studio 2015 中将 header 编译器更改为 C 编译器(不是 C++)

c - 链接中 undefined reference 错误

c - 错误 : Stack around the variable 'string' was corrupted

java - 如何以串行时间方式执行三个不同的任务?