Skip to content
Snippets Groups Projects
RunGuard.h 819 B
Newer Older
  • Learn to ignore specific revisions
  • /****************************************************************************
     *
    
    Gus Grubba's avatar
    Gus Grubba committed
     * (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
    
     *
     * QGroundControl is licensed according to the terms in the file
     * COPYING.md in the root of the source code directory.
     *
     ****************************************************************************/
    
    #ifndef RunGuard_H
    #define RunGuard_H
    
    #include <QObject>
    #include <QSharedMemory>
    #include <QSystemSemaphore>
    
    class RunGuard
    {
    public:
        RunGuard( const QString& key );
        ~RunGuard();
    
        bool isAnotherRunning();
        bool tryToRun();
        void release();
    
    private:
        const QString key;
        const QString memLockKey;
        const QString sharedmemKey;
    
        QSharedMemory sharedMem;
        QSystemSemaphore memLock;
    
        Q_DISABLE_COPY( RunGuard )
    };
    
    #endif