eg. sync voodoo (see comments) as follows:
std::mutex g_mutex;
const std::chrono::seconds g_dura(1);
void log(const char* msg) {
std::clog << std::this_thread::get_id()
<< " " << msg
<< std::endl;
}
struct Asset {
Asset () {
log("before lock attempt");
g_mutex.lock();
log("after lock attempt");
g_mutex.unlock();
}
};
void test() {
log("entering test()");
static Asset asset;
log("leaving test()");
}
int main() {
g_mutex.lock();
std::thread t1(test), t2(test);
std::this_thread::sleep_for(g_dura);
g_mutex.unlock();
t1.join();
t2.join();
}
( t1), init, ctor, , ( t1) init ( ) .
, , " " / " ".
g++ (Debian 4.8.2-16) .
, t1, t2 ; .