c++ 多线程设计
c++多线程设计,不知道为什么用多线程以后,线程函数中的两个函数运行时间变慢了。致使总时间增加了,请高手指点哈!!!!...
c++多线程设计,不知道为什么用多线程以后,线程函数中的两个函数运行时间变慢了。致使总时间增加了,请高手指点哈!!!!
展开
4个回答
展开全部
我给几点意见:
多线程设计,不分你是何种语言,是硬件支持以及操作系统实现调度过程的。
CPU的硬件特性决定了同一个时间片内,只允许一个线程在CPU内运行,如果你多个线程都有抢占CPU的特性,那么,CPU要在不同线程中切换(切换过程会引发相关的环境切换,也就是要做很多费时间的操作),如果频繁的切换,就会造成程序运行效率低下。
如果你的对你所使用的语言已经比较熟悉(这是实验的基础),建议你看操作系统原理相关的书籍,这不属于C++语言的范围。你也可以直接看基于某个系统下有针对性的多线程书籍,如《Win32多线程程序设计》,《linux多线程程序设计》这样的书籍。
如有疑问,可以追加问题,欢迎采纳。谢谢!
追问
追答
1.在你贴上来的代码中,我只看到了第一个图片上面有m_Mutex这个互斥量,并且不清楚这个互斥量有没有传到你所使用的读写数据的线程当中。
2.你说的缓冲区用了临界区进行互斥访问,这样的同步操作就会发生一个线程需要等待另一个线程的情况,有可能使本来2.5毫秒可以完成的工作变成5毫秒才完成。互斥会浪费多少时间要看你在互斥的时间长短。
3. 线程切换是需要时间,这是肯定的。线程切换是否是占主要时间,需要你在代码中做时间记录测试了。
4. 但直接测试线程切换的时间是很难准确的,但你可以通过测试互斥操作等待时间,如果互斥操作时间不是主要因素,那么线程切换就是主要因素了。
展开全部
这个你可以想象一下电脑的CPU工作原理就明白,还有就是WINDOWS系统,为了同时可以跑起来多个功能,肯定不会在乎多的那点点时间,也多不了多少
追问
但是多了几乎20秒时间,顺序执行才需要40秒,现在就需要一分钟了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多线程一样要占用CPU时间,变慢很正常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主,建议你阅读《提问的智慧》并背诵全文。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询