phoenix8956 2020-06-30 16:19 采纳率: 16.7%
浏览 154
已结题

多线程如何让用户调用马上抢到互斥锁?

//B线程
while(true){

unique_lock<std::mutex> lock(mutexlock);
.............这里耗时可以不计.............
lock.unlock();
 .......................................
}

//用户线程调用start


    void start(){
      auto start=GetTickCount();
      unique_lock<std::mutex> lock(mutexlock);//
       cout<<"抢到锁耗时"<<GetTickCount()-start;

     }


由于B线程里频繁抢锁导致
用户线程调用start时候要平均600多毫秒才能抢到锁,如何做能尽量减少
这个时间,最好降到5毫秒内。我粗略想的 是 调用start时候用一个内核事件让B暂停一下

  • 写回答

3条回答 默认 最新

  • 轻云K 2020-06-30 18:32
    关注

    用一个变量去统计有没有用户线程在请求资源,有的话,其他次要线程暂时不获取(最好设置一个不获取的上限)

    评论

报告相同问题?