线程池典型错误一例

撸了个线程池设施. 经一位很厉害的前辈指点, 有不少可以优化的地方 犯傻逼了: sem_post(&sem); return lockfree_queue.push(v); 然后在 pop 那里, 先 sem_wait() 一看, 哎! 有东西, 于是到 queue 里取, 一看, 哎! 空的! 于是线程休眠, 继续等待信号. 此时主线程姗姗来迟, 终于把 v push 到 queue 里. 客户端阻在那儿, 直到海枯石烂, 天地为之变色.