我编写了一个小型Go库(),它收集某些变量的运行min/max/avg/stddev。我将其与等效的Java ()进行了比较,令我感到惊讶的是,Java实现要快得多。我想知道为什么。这个库基本上由一个简单的数据存储库组成,其中包含一个锁,用于序列化读和写。实现(、)和Java进行了基准测试,但我不明白为什么:10 threads with 20000 items took 133 millis
1
我知道在JAVA中,我们可以使用{}来限制锁的范围,以便尽快释放锁。如果我们能在c++中做同样的事情呢?// some code std::lock_guard<std::mutex> lock(mutex_); // some code另外,互斥是什么时候起作用的?锁一进入函数就能工作,还是一直执行到当前行被锁定?编译器对代码优化有影响吗?