在windows下c++写了个测试程序,调用_beginthreadex循环创建1000个线程,每个线程都是同一个函数,处理20M的数据包,在windows下一运行就报内存不足,有没有什么好办法解决
当减小数据量的时候,例如减小到10M,1000个线程,程序能够正常运行,但是消耗内存也在20G左右;
线程创建执行结束之后也调用_endthreadex释放线程资源了,但是好像没啥用;
求指点;
在windows下c++写了个测试程序,调用_beginthreadex循环创建1000个线程,每个线程都是同一个函数,处理20M的数据包,在windows下一运行就报内存不足,有没有什么好办法解决
当减小数据量的时候,例如减小到10M,1000个线程,程序能够正常运行,但是消耗内存也在20G左右;
线程创建执行结束之后也调用_endthreadex释放线程资源了,但是好像没啥用;
求指点;
如果你是要进行并行计算,那么活跃的并行计算的线程数目应该跟CPU可并行计算的核数相同,否则的话,并行计算的效率反而降低。
你这种情况应该使用线程池来做,让线程池根据CPU的并行算力来调度哪些线程同时运行,而不是开1000个线程同时运行。