qt翻译---QSemaphore

QSemaphore Class Reference
[QtCore module]

该类提供一个一般的可数的信号。
#include <QSemaphore>
注意:这里所有的函数都是线程安全的
公共函数:

QSemaphore
  ( int   n   = 0 )
 
~QSemaphore   ()
void
acquire   ( int   n   = 1 )
int
available   () const
void
release   ( int   n   = 1 )
bool
tryAcquire   ( int   n   = 1 )
bool
tryAcquire   ( int   n , int   timeout   )
详细描述:
一个 semaphore 是一个 mutex 的一般化。当一个 mutex 只能被锁一次,而可能获得一个 semaphore 多次。 Semaphore 是典型的被用来保护一定数目的资源。
Semaphore 支持两个基本属性, acquire ()和 release ()
Acquire n )视图获得 n 资源。如果没有这些资源,他将堵塞。
Release n )释放 n 资源。
也有一个 tryAcquire ()函数,立即返回,如果他不能获得资源。一个 available ()函数,返回可得资源的数目。
QSemaphore sem(5);      // sem.available() == 5
      

    
      
    
 sem.acquire(3);         // sem.available() == 2
      
 sem.acquire(2);         // sem.available() == 0
      
 sem.release(5);         // sem.available() == 5
      
 sem.release(5);         // sem.available() == 10
      

    
      
    
 sem.tryAcquire(1);      // sem.available() == 9, returns true
      
 sem.tryAcquire(250);    // sem.available() == 9, returns false
      
一个典型的 semaphore 应用是为了控制进入一个循环共享 buf ,被一个生产者线程和一个消费者线程。 Semaphore 例子展示怎样使用 QSemaphore 来解决问题。
一个非计算的 semaphore 例子就像在一个餐馆吃饭。一个 semaphore 和一些椅子被初始化。当人们到达,他们想要一个座位。当座位被占, available ()是减少。当人们离开, available ()增加。如果 10 人中想坐,但是只有 9 个座位,那么他们要等。而另一波 4 人将坐,那么 available 变成 5 ,使 10 人等的更长。
成员函数文件:

QSemaphore::QSemaphore ( int n = 0 )

创建一个新的 semaphore 和初始化资源数目。

QSemaphore::~QSemaphore ()

void QSemaphore::acquire ( int n = 1 )

int QSemaphore::available () const

void QSemaphore::release ( int n = 1 )

注意:这个函数也能用来创造资源
QSemaphore sem(5);      // a semaphore that guards 5 resources
      
 sem.acquire(5);         // acquire all 5 resources
      
 sem.release(5);         // release the 5 resources
      
 sem.release(10);        // "create" 10 new resources
      

bool QSemaphore::tryAcquire ( int n = 1 )

QSemaphore sem(5);      // sem.available() == 5
      
 sem.tryAcquire(250);    // sem.available() == 5, returns false
      
 sem.tryAcquire(3);      // sem.available() == 2, returns true
      

bool QSemaphore::tryAcquire ( int n, int timeout )

QSemaphore sem(5);            // sem.available() == 5
      
 sem.tryAcquire(250, 1000);    // sem.available() == 5, waits 1000 milliseconds and returns false
      
 sem.tryAcquire(3, 30000);     // sem.available() == 2, returns true without waiting
      
 

你可能感兴趣的:(职场,qt,休闲)