互斥锁锁定/解锁命令

用户名

我很有趣,互斥锁(不取决于特定语言)是否必须保持锁定/解锁的顺序?
这是示例C ++代码:

std::mutex testVecMtx;
std::vector<int> testVec;

void testPush(int v){
  std::lock_guard<std::mutex> lk(testVecMtx);

  if (testVec.empty()){
    // wait some time to get more threads waiting on testVecMtx
    std::this_thread::sleep_for(std::chrono::milliseconds(3000));
  }

  testVec.push_back(v);
}

void Main_TEST(){
  std::list<std::thread> thList;

  for (int i = 0; i < 1000; i++){
    thList.push_front(std::thread(testPush, i));
  }

  for (auto &i : thList){
    if (i.joinable()){
        i.join();
    }
  }

  bool ok = true;

  for (int i = 0; i < (testVec.size() - 1) && ok; i++){
    ok = testVec[i + 1] - testVec[i] == 1;
  }

  if (ok){
    int stop = 243; // 1st breaking point here...
  }
  else{
    int stop = 432; // ...and 2nd here
  }
}

在VS2013服务器时间在Debug和Release(有一些更改,未优化代码)下运行此代码后,我总是只在第一个断点处命中。

克拉斯科维奇

不,没有关于订单的保证。它恰好以这种方式在您的计算机上工作(例如,在我的计算机ok上并非总是如此)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

锁定/解锁互斥锁

来自分类Dev

pthread互斥锁(解锁)锁定不同的线程

来自分类Dev

强制解锁由其他线程锁定的互斥锁

来自分类Dev

锁定/解锁专用功能内的互斥锁

来自分类Dev

互斥锁-定时锁定

来自分类Dev

线程的等待队列在POSIX pthread互斥锁锁定和解锁中位于何处?

来自分类Dev

C:使用pthreads进行线程同步,锁定和解锁互斥锁

来自分类Dev

线程的等待队列在POSIX pthread互斥锁锁定和解锁中位于何处?

来自分类Dev

增强锁定互斥锁死锁

来自分类Dev

如何多次锁定互斥锁?

来自分类Dev

删除已锁定的互斥锁

来自分类Dev

删除已锁定的互斥锁

来自分类Dev

如何控制互斥锁和解锁?

来自分类Dev

无法锁定C中的互斥锁

来自分类Dev

用互斥锁锁定向量-增强

来自分类Dev

pthread:使用超时锁定互斥锁

来自分类Dev

安静锁定互斥锁是否重要?

来自分类Dev

互斥锁已经被我锁定了吗?

来自分类Dev

长时间锁定互斥锁是否安全?

来自分类Dev

多线程重新锁定互斥锁

来自分类Dev

用互斥锁锁定向量-增强

来自分类Dev

如何在增加渴望的负载的同时解决此错误?“ ERROR ThreadError:尝试解锁由另一个线程锁定的互斥锁”

来自分类Dev

如果一个线程锁定了一个互斥锁而没有将其解锁,那么其他线程是否应该被阻塞?

来自分类Dev

在异常情况下解锁互斥锁

来自分类Dev

互斥锁如何等待低电平解锁?

来自分类Dev

互斥锁解锁和 request_module() 行为

来自分类Dev

互斥锁上的解锁/锁定操作如何比从内存中获取更快?

来自分类Dev

在没有已知原因的情况下进行“紧急:同步:解锁已解锁的互斥锁”

来自分类Dev

在进程之间共享条件变量和互斥锁:互斥锁必须先锁定吗?

Related 相关文章

  1. 1

    锁定/解锁互斥锁

  2. 2

    pthread互斥锁(解锁)锁定不同的线程

  3. 3

    强制解锁由其他线程锁定的互斥锁

  4. 4

    锁定/解锁专用功能内的互斥锁

  5. 5

    互斥锁-定时锁定

  6. 6

    线程的等待队列在POSIX pthread互斥锁锁定和解锁中位于何处?

  7. 7

    C:使用pthreads进行线程同步,锁定和解锁互斥锁

  8. 8

    线程的等待队列在POSIX pthread互斥锁锁定和解锁中位于何处?

  9. 9

    增强锁定互斥锁死锁

  10. 10

    如何多次锁定互斥锁?

  11. 11

    删除已锁定的互斥锁

  12. 12

    删除已锁定的互斥锁

  13. 13

    如何控制互斥锁和解锁?

  14. 14

    无法锁定C中的互斥锁

  15. 15

    用互斥锁锁定向量-增强

  16. 16

    pthread:使用超时锁定互斥锁

  17. 17

    安静锁定互斥锁是否重要?

  18. 18

    互斥锁已经被我锁定了吗?

  19. 19

    长时间锁定互斥锁是否安全?

  20. 20

    多线程重新锁定互斥锁

  21. 21

    用互斥锁锁定向量-增强

  22. 22

    如何在增加渴望的负载的同时解决此错误?“ ERROR ThreadError:尝试解锁由另一个线程锁定的互斥锁”

  23. 23

    如果一个线程锁定了一个互斥锁而没有将其解锁,那么其他线程是否应该被阻塞?

  24. 24

    在异常情况下解锁互斥锁

  25. 25

    互斥锁如何等待低电平解锁?

  26. 26

    互斥锁解锁和 request_module() 行为

  27. 27

    互斥锁上的解锁/锁定操作如何比从内存中获取更快?

  28. 28

    在没有已知原因的情况下进行“紧急:同步:解锁已解锁的互斥锁”

  29. 29

    在进程之间共享条件变量和互斥锁:互斥锁必须先锁定吗?

热门标签

归档