banner.gif adie's blog
主页 博客 胭脂泪,相留醉,几时重,自是人生长恨水长东
统计
日志总数: 127
评论总数: 123
日志分类
日志归档
最近日志
最近评论
订阅
rss2.gif

atom.gif

google_rss
yc.gif 【编程】 阅读 2891 次

C++(Windows平台)线程同步对象测试

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:

 

  1. volatile int x = 0;  
  2.   
  3. std::thread  th([&]() {  
  4.     boost::timer t;  
  5.     for (int i = 0; i < 500000; ++i)  
  6.     {  
  7.         c.lock();  
  8.         ++x;  
  9.         c.unlock();  
  10.     }  
  11.     std::cout << "take: " << t.elapsed() << std::endl;  
  12. });  
  13.   
  14. boost::timer t;  
  15. for (int i = 0; i < 500000; ++i)  
  16. {  
  17.     c.lock();  
  18.     ++x;  
  19.     c.unlock();  
  20. }  
  21. std::cout << "take: " << t.elapsed() << std::endl;  
  22.   
  23. th.join();  
  24. std::cout << "result: " << x << std::endl;  

▲评论

X 正在回复:
姓 名: 留下更多信息
性 别:
邮 件:
主 页:
Q Q:
来 自:
职 业:
评 论:
验 证:


Valid HTML 4.01 Strict Valid CSS!
Copyleft.A!die Software Studio.ADSS
Power by webmaster@adintr.com