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;}另外,多线程操作全局变量的时候,一定要用线程同步(如临界区等)来操作,否则,会有问题。在使用的过程中,一定要注意资源和线程之间的关系,避免死锁发生。
经过测试,多线程中的线程数是不是越多越好?这个问题的答案应该就有了。
转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/12307773
- 2楼longshengguoji2小时前
- 肯定不是啦,一般来说是及其有几个CPU就开几个线程,开多了就是假并行
- Re: u0117292652小时前
- 回复longshengguojin有一定道理,也要看线程执行任务所消耗的时间。当执行任务需要等待数据库结果、网络结果的时候,这个时候多开几个线程还是有作用的。
- 1楼liyongming19828小时前
- 当kernel的进程调度及同步的时间超过你application的时间的话,性能就会急剧下降
- Re: u0117292654小时前
- 回复liyongming1982n嗯,是的。