• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

randombit / botan / 4834822395

28 Apr 2023 09:55PM CUT coverage: 92.132% (-0.01%) from 92.146%
4834822395

push

github

77584 of 84210 relevant lines covered (92.13%)

12129586.55 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

71.43
/src/lib/utils/thread_utils/semaphore.cpp
1
/*
2
* Semaphore
3
* (C) 2013 Joel Low
4
*
5
* Botan is released under the Simplified BSD License (see license.txt)
6
*/
7

8
#include <botan/internal/semaphore.h>
9

10
// Based on code by Pierre Gaston (http://p9as.blogspot.com/2012/06/c11-semaphores.html)
11

12
namespace Botan {
13

14
void Semaphore::release(size_t n)
922✔
15
   {
16
   for(size_t i = 0; i != n; ++i)
5,526✔
17
      {
18
      std::lock_guard<std::mutex> lock(m_mutex);
4,604✔
19

20
      if(m_value++ < 0)
4,604✔
21
         {
22
         ++m_wakeups;
×
23
         m_cond.notify_one();
×
24
         }
25
      }
4,604✔
26
   }
922✔
27

28
void Semaphore::acquire()
4,604✔
29
   {
30
   std::unique_lock<std::mutex> lock(m_mutex);
4,604✔
31
   if(m_value-- <= 0)
4,604✔
32
       {
33
       m_cond.wait(lock, [this] { return m_wakeups > 0; });
×
34
       --m_wakeups;
×
35
       }
36
   }
4,604✔
37

38
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc