QSystemSemaphore使用 简介

Public Functions

  QSystemSemaphore ( const QString & key, int initialValue = 0, AccessMode mode = Open )
  ~QSystemSemaphore ()
bool acquire ()
SystemSemaphoreError error () const
QString errorString () const
QString key () const
bool release ( int n = 1 )
void setKey ( const QString & key, int initialValue = 0, AccessMode mode = Open )

 

<一>简介

     QSystemSemaphore类提供了一个通用具备计数功能的系统信号量。ui

       信号量是一个泛化的互斥锁。而一个互斥锁能够锁只有一次,一个信号量能够屡次获取使用。一般,一个信号量是用来保护必定数量相同的资源。spa

       像轻量级的计数信号量QSemaphore同样,QSystemSemaphore也能够从多个线程访问。线程

       与QSemaphore不一样的是,QSystemSemaphore也能够从多个进程访问。code

       这意味着QSystemSemaphore是一个更重量级的类,因此若是你的应用程序不须要在多个进程访问你的信号量,您将可能只须要使用QSemaphore。进程

       信号支持两个基本操做,acquire() and release()。资源

       acquire()尝试去获取一个资源。若是没有可用的资源,这个调用将会一直阻塞着,一直等到它有可用资源。而后这个资源会被获取,这个调用才会返回。it

       release() 释放一个资源,这样它才能够被其余进程获取到。并且release(),能够同时释放多个资源。release(n). n>1.io

       一个QSystemSemaphore系统信号量经过建立一个字符关键字,让其余进程能够使用相同的信号量。table

<二>代码例子class

       Example1: Create a system semaphore

QSystemSemaphore sem("market", 3, QSystemSemaphore::Create);  
                                 // resources available == 3  
    sem.acquire();               // resources available == 2  
    sem.acquire();               // resources available == 1  
    sem.acquire();               // resources available == 0  
    sem.release();               // resources available == 1  
    sem.release(2);              // resources available == 3

     Example2: Open a system semaphoreQSystemSemaphore

QSystemSemaphore sem("market", 3, QSystemSemaphore::Open);
相关文章
相关标签/搜索