码迷,mamicode.com
首页 > 编程语言 > 详细

一个线程相关的高CPU占用问题的定位

时间:2019-12-21 22:19:03      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:唤醒   一个   重构   操作   封装   堆栈   pop   代码   冗余   

最近在重构项目代码时,发现两个线程同时访问一个加锁的std::list队列时,会出现恶性竞争锁的现象。

具体现象是A线程总是拿不到锁,B线程抢占几次后,A才抢占到。

由于是重构项目,也无法通过回滚代码来解决。

最终定位问题是,重构时对std::list队列单独封装了一个类导致的。单独封装一个类,那么每次push pop时都会多了一层函数堆栈。

删除该封装后,问题解决。

由此得出一个结论,对于频繁唤醒的读写线程,执行的操作应该尽量简单直接,避免冗余,避免进行过度的封装

一个线程相关的高CPU占用问题的定位

标签:唤醒   一个   重构   操作   封装   堆栈   pop   代码   冗余   

原文地址:https://www.cnblogs.com/jiayayao/p/12078396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!