线程池典型错误一例

撸了个线程池设施.

  1. 经一位很厉害的前辈指点, 有不少可以优化的地方
  2. 犯傻逼了:
    sem_post(&sem);
    return lockfree_queue.push(v);
    

然后在 pop 那里, 先 sem_wait() 一看, 哎! 有东西, 于是到 queue 里取, 一看, 哎! 空的! 于是线程休眠, 继续等待信号.
此时主线程姗姗来迟, 终于把 v push 到 queue 里. 客户端阻在那儿, 直到海枯石烂, 天地为之变色.

Leave a Reply

Your email address will not be published. Required fields are marked *