cpu使用过高导致其余app被block住

xiaoxiao2021-02-27  358

今天遇到一个问题:守护进程第一次执行某个功能没问题,第二次执行总出错。

1. 二分法注释掉多余的功能,逐步调试

2. 发现当执行gsource的timer后cpu会达到九十多,近100.因此导致第二次执行同样功能不正常

3. 发现源码中只是使用了g_timeout_add_seconds,但是并没有将该timer attach到某一个context中去(context属于某个mainloop)

4. 尝试attach,结果还是不行,思考是否没有释放

5. 尝试使用后释放该timer,最终可行(注意unref的次数,底层代码没有深究,个人推测应该和智能smart pointer的计数指针类似)

6. 尝试使用其他的timer,最终也可行。

转载请注明原文地址: https://www.6miu.com/read-5988.html

最新回复(0)