读书人

c++中多线程编程是否线程数越多越好

发布时间: 2013-10-06 18:25:14 作者: rapoo

c++中多线程编程是不是线程数越多越好?

多线程编程可以提高程序的并发执行能力,那是不是线程越多越好呢?

大家可以参考下面的代码做测试:

std::map<int, int>::iterator IterCount;for(IterCount=m_task.begin(); IterCount!=m_task.end();IterCount++){int nThreadId= (*IterCount).first;int nCount = (*IterCount).second;EnterCriticalSection(&g_cs);cout << "nThreadId:" << nThreadId << ", nCount" << nCount<<endl;LeaveCriticalSection(&g_cs);(*IterCount).second = 0;}


可以修改备注1处的Sleep(2000),分别改为1000,3000,5000,10000等看看结果有什么区别?这里的时间其实是模拟执行一个任务所需要的时间,也可以用随机函数随机产生。

另外,多线程操作全局变量的时候,一定要用线程同步(如临界区等)来操作,否则,会有问题。在使用的过程中,一定要注意资源和线程之间的关系,避免死锁发生。

经过测试,多线程中的线程数是不是越多越好?这个问题的答案应该就有了。


转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/12307773







2楼longshengguoji2小时前
肯定不是啦,一般来说是及其有几个CPU就开几个线程,开多了就是假并行
Re: u0117292652小时前
回复longshengguojin有一定道理,也要看线程执行任务所消耗的时间。当执行任务需要等待数据库结果、网络结果的时候,这个时候多开几个线程还是有作用的。
1楼liyongming19828小时前
当kernel的进程调度及同步的时间超过你application的时间的话,性能就会急剧下降
Re: u0117292654小时前
回复liyongming1982n嗯,是的。

读书人网 >编程

热点推荐