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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号