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

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

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

#define  MAX_WORKTHREAD		5
map m_task;//用于统计每个线程做的任务数
std::deque m_MsgQueue;//处理的消息队列
	for (i=0; i

当任务执行完了后,可以打印m_task里的数据:

std::map::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<


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

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

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


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







你可能感兴趣的:(c++中多线程编程是不是线程数越多越好?)