C++(Windows平台)线程同步对象测试
by adie
2018-08-08 11:16:03
测试环境: VC2017 15.7.5
SDK版本: 10.0.17134.0
boost版本: 1.6.3
名称 |
性能 |
同线程重复加锁 |
跨线程解锁 |
未解锁析构 |
CRITICAL_SECTION |
0.05/0.15 |
通过 |
OK |
OK |
std::mutex |
0.05/0.25 |
异常 |
异常 |
异常 |
boost::mutex |
0.05/0.20 |
阻塞 |
OK |
OK |
注: 1. 性能测试代码如下, 显示值为两个线程的值相加的大致结果, 单位为秒. 前面的为 Release 版, 后面的为 Debug:
- volatile int x = 0;
-
- std::thread th([&]() {
- boost::timer t;
- for (int i = 0; i < 500000; ++i)
- {
- c.lock();
- ++x;
- c.unlock();
- }
- std::cout << "take: " << t.elapsed() << std::endl;
- });
-
- boost::timer t;
- for (int i = 0; i < 500000; ++i)
- {
- c.lock();
- ++x;
- c.unlock();
- }
- std::cout << "take: " << t.elapsed() << std::endl;
-
- th.join();
- std::cout << "result: " << x << std::endl;
▲评论