semaphore.h
来自「一个语言识别引擎」· C头文件 代码 · 共 57 行
H
57 行
// -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
#ifndef _ACECHECK_SEMAPHORE_
#define _ACECHECK_SEMAPHORE_
/**
* A class for thread synchronization and mutual exclusion.
* A semaphore has an internal counter. Multiple threads can
* safely increment or decrement that counter. If one thread
* attempts to decrement the counter below zero, it must wait
* for another thread to first increment it. This is a
* useful primitive for regulating thread interaction.
*/
class Semaphore {
public:
/**
* Constructor. Sets the initial value of the counter.
* @param initialCount initial value of the counter
*/
Semaphore(int initialCount = 1);
/**
* Destructor.
*/
virtual ~Semaphore();
/**
* Decrement the counter, even if we must wait to do that. If the counter
* would decrement below zero, the calling thread must stop and
* wait for another thread to call Semaphore::post on this semaphore.
*/
void wait();
/**
* Decrement the counter, unless that would require waiting. If the counter
* would decrement below zero, this method simply returns without doing
* anything.
* @return true if the counter was decremented
*/
bool check();
/**
* Increment the counter. If another thread is waiting to decrement the
* counter, it is woken up.
*/
void post();
private:
void *implementation;
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?