[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Compiler gives wrong output
From: |
U.Mutlu |
Subject: |
Compiler gives wrong output |
Date: |
Tue, 9 Jun 2015 00:10:34 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0 SeaMonkey/2.37a1 |
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
- Compiler gives wrong output,
U.Mutlu <=