命名空间std中的C mutex不指定类型

前端之家收集整理的这篇文章主要介绍了命名空间std中的C mutex不指定类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我做一个简单的c程序来演示使用锁.我使用codeblocks和gnu gcc编译器
  1. #include <iostream>
  2. #include <thread>
  3. #include <mutex>
  4. using namespace std;
  5. int x = 0; // shared variable
  6.  
  7. void synchronized_procedure()
  8. {
  9. static std::mutex m;
  10. m.lock();
  11. x = x + 1;
  12. if (x < 5)
  13. {
  14. cout<<"hello";
  15. }
  16. m.unlock();
  17.  
  18. }
  19.  
  20. int main()
  21. {
  22.  
  23. synchronized_procedure();
  24. x=x+2;
  25. cout<<"x is"<<x;
  26. }
@H_301_4@得到以下错误:命名空间std中的mutex不指定类型.为什么我得到这个错误?编译器不支持使用锁吗?

解决方法

我碰巧也在看同样的问题.在Linux下,GCC可以正常使用std :: mutex.但是Windows上的事情似乎更糟.在< mutex> MinGW GCC 4.7.2附带的头文件(我相信你也在使用MinGW GCC版本),我发现互斥类在下面的#if保护下定义:
  1. #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
@H_301_4@遗憾的是,在Windows上没有定义_GLIBCXX_HAS_GTHREADS.运行时支持根本不在.

@H_301_4@您可能还想直接在MinGW邮件列表中提出问题,以防一些GCC专家可能会帮助您.

@H_301_4@编辑:MinGW-w64项目提供必要的运行时支持.查看http://mingw-w64.sourceforge.net/

猜你在找的C&C++相关文章