android Profiler将我的一个本机线程显示为使用100%cpu,但这个线程只调用未发出信号的信号量上的sem_wait
:
int rc;
do {
rc = sem_wait(&m_sema);
} while (rc == -1 && errno == EINTR);
我在while条件中添加了一个断点,并在sem_wait
之后添加了日志记录,并且可以确认对sem_wait
的调用永远不会返回。
这是针对调试版本的虚假CPU使用情况,还是这个调用实际上是在设备上使用CPU周期?
此信号量是MoodyCamel' C++11 SPSC Blocking Queue的一部分,否则似乎没有任何问题。