我使用 gcc-4.8.1(configure: ./configure --prefix=/usr/local) 在 Ubuntu 12.04 中编译了以下代码,但是当我运行它时,它不起作用。它并没有停下来等待互斥锁。它返回 false,并输出“Hello world!”
命令:g++ -std=c++11 main.cpp -omain -pthread
当我使用 gcc-4.6(apt-get install g++) 编译它时,它运行良好。程序等待了大约十秒钟,然后输出“Hello world!”
#include <thread> #include <iostream> #include <chrono> #include <mutex> std::timed_mutex test_mutex; void f() { test_mutex.try_lock_for(std::chrono::seconds(10)); std::cout << "hello world\n"; } int main() { std::lock_guard<std::timed_mutex> l(test_mutex); std::thread t(f); t.join(); return 0; }