tesseract  4.1.3
SVSemaphore Class Reference

#include <svutil.h>

Public Member Functions

 SVSemaphore ()
 Sets up a semaphore. More...
 
 ~SVSemaphore ()
 Cleans up the mutex. More...
 
void Signal ()
 Signal a semaphore. More...
 
void Wait ()
 Wait on a semaphore. More...
 

Detailed Description

A semaphore class which encapsulates the main signaling and wait abilities of semaphores for windows and unix.

Definition at line 48 of file svutil.h.

Constructor & Destructor Documentation

◆ SVSemaphore()

SVSemaphore::SVSemaphore ( )

Sets up a semaphore.

Definition at line 174 of file svutil.cpp.

174  {
175 #ifdef _WIN32
176  semaphore_ = CreateSemaphore(0, 0, 10, 0);
177 #elif defined(__APPLE__)
178  char name[50];
179  snprintf(name, sizeof(name), "%ld", random());
180  sem_unlink(name);
181  semaphore_ = sem_open(name, O_CREAT , S_IWUSR, 0);
182  if (semaphore_ == SEM_FAILED) {
183  perror("sem_open");
184  }
185 #else
186  sem_init(&semaphore_, 0, 0);
187 #endif
188 }

◆ ~SVSemaphore()

SVSemaphore::~SVSemaphore ( )

Cleans up the mutex.

Definition at line 190 of file svutil.cpp.

190  {
191 #ifdef _WIN32
192  CloseHandle(semaphore_);
193 #elif defined(__APPLE__)
194  sem_close(semaphore_);
195 #else
196  sem_close(&semaphore_);
197 #endif
198 }

Member Function Documentation

◆ Signal()

void SVSemaphore::Signal ( )

Signal a semaphore.

Definition at line 200 of file svutil.cpp.

200  {
201 #ifdef _WIN32
202  ReleaseSemaphore(semaphore_, 1, nullptr);
203 #elif defined(__APPLE__)
204  sem_post(semaphore_);
205 #else
206  sem_post(&semaphore_);
207 #endif
208 }

◆ Wait()

void SVSemaphore::Wait ( )

Wait on a semaphore.

Definition at line 210 of file svutil.cpp.

210  {
211 #ifdef _WIN32
212  WaitForSingleObject(semaphore_, INFINITE);
213 #elif defined(__APPLE__)
214  sem_wait(semaphore_);
215 #else
216  sem_wait(&semaphore_);
217 #endif
218 }

The documentation for this class was generated from the following files: