Hi,
on this page:
http://en.cppreference.com/w/cpp/thread/recursive_mutex/try_lock
they give the following C++11 example:

#include <iostream>
#include <mutex>

int main()
{
    std::mutex test;
    if (test.try_lock()==true) {
        std::cout << "lock acquired" << std::endl;
        test.unlock();    //now unlock the mutex
    } else {
        std::cout << "lock not acquired" << std::endl;
    }

    test.lock();    //to lock it again
    if (test.try_lock()) {  //true can be left out
        std::cout << "lock acquired" << std::endl;
    } else {
        std::cout << "lock not acquired" << std::endl;
    }
    test.unlock();
}

and they say it would give this output:
Output:
lock acquired
lock not acquired

I wonder why my compiler (g++ 4.9.2 from Debian repo) gives a different output:
lock acquired
lock acquired

Which compiler is wrong, and why?

Besides that: doesn't the code contain the wrong mutex:
shouldn't it rather be "std::recursive_mutex" for a recursive mutex?

Thx

My compile switches:

$ g++ -Wall -O2 -std=c++11 t.cpp
$ ./a.out
lock acquired
lock acquired

$ g++ -Wall -O2 -std=gnu++11 t.cpp
$ ./a.out
lock acquired
lock acquired



_______________________________________________
help-gplusplus mailing list
help-gplusplus@gnu.org
https://lists.gnu.org/mailman/listinfo/help-gplusplus

Reply via email to