SemaphoreImplWin32.cpp
Go to the documentation of this file.
00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
00002 
00003 // -- BEGIN LICENSE BLOCK ----------------------------------------------
00004 // This file is part of FZIs ic_workspace.
00005 //
00006 // This program is free software licensed under the LGPL
00007 // (GNU LESSER GENERAL PUBLIC LICENSE Version 3).
00008 // You can find a copy of this license in LICENSE folder in the top
00009 // directory of the source code.
00010 //
00011 // © Copyright 2016 FZI Forschungszentrum Informatik, Karlsruhe, Germany
00012 //
00013 // -- END LICENSE BLOCK ------------------------------------------------
00014 
00015 //----------------------------------------------------------------------
00021 //----------------------------------------------------------------------
00022 #include "SemaphoreImplWin32.h"
00023 
00024 #include "Common.h"
00025 
00026 namespace icl_core {
00027 namespace thread {
00028 
00029 SemaphoreImplWin32::SemaphoreImplWin32(size_t initial_value)
00030   : m_semaphore(0)
00031 {
00032   m_semaphore = CreateSemaphore(NULL, LONG(initial_value), LONG_MAX, NULL);
00033 }
00034 
00035 SemaphoreImplWin32::~SemaphoreImplWin32()
00036 {
00037   CloseHandle(m_semaphore);
00038 }
00039 
00040 void SemaphoreImplWin32::post()
00041 {
00042   ReleaseSemaphore(m_semaphore, 1, NULL);
00043 }
00044 
00045 bool SemaphoreImplWin32::tryWait()
00046 {
00047   DWORD res = WaitForSingleObject(m_semaphore, 0);
00048   return res == WAIT_OBJECT_0;
00049 }
00050 
00051 bool SemaphoreImplWin32::wait()
00052 {
00053   DWORD res = WaitForSingleObject(m_semaphore, INFINITE);
00054   return res == WAIT_OBJECT_0;
00055 }
00056 
00057 bool SemaphoreImplWin32::wait(const TimeSpan& timeout)
00058 {
00059   DWORD res = WaitForSingleObject(m_semaphore, DWORD(timeout.toMSec()));
00060   return res == WAIT_OBJECT_0;
00061 }
00062 
00063 bool SemaphoreImplWin32::wait(const TimeStamp& timeout)
00064 {
00065   return wait(impl::getRelativeTimeout(timeout));
00066 }
00067 
00068 }
00069 }


fzi_icl_core
Author(s):
autogenerated on Tue Aug 8 2017 02:28:03