Michael Gronager has figured out why: I now exit the ipc thread at startup by inserting: void ipcThread(void\* parg) { ipcShutdown(); return; ... Bitcoin-Qt is now running nicely using around 0.9% CPU. So it seems like the culprit was indeed line 31: if(mq->timed_receive(&strBuf, sizeof(strBuf), nSize, nPriority, d))