0

Windows ライブラリの依存関係の削除について、 Windows ライブラリの依存関係を削除するという質問を以前にしました 。ユーザー:httpsThreads ://stackoverflow.com/users/214671/matteo-italiaは、Windows固有のコードを置き換えることができるとすでに説明していましstd::mutexたが、Processes現在、私が受け入れた答えである標準には何もありません。

別の良い回答では、ユーザー: https://stackoverflow.com/users/7594711/soronelhaetirの使用を提案していboost-interprocessました。しかし、私の現在のプロジェクトはboost無料です。

この現在のクラスでは:

ブロックプロセス:

BlockProcess.h

#ifndef BLOCK_PROCESS_H
#define BLOCK_PROCESS_H

#include <Windows.h>
#include <process.h>
#include <string>

namespace demo {

class BlockProcess final {
private:
    HANDLE hMutex_;
public:
    explicit BlockProcess( const std::string& strName );
    ~BlockProcess();

    bool isBlocked() const;

    BlockProcess( const BlockProcess& c ) = delete;
    BlockProcess& operator=( const BlockProcess& c ) = delete;
};

} // namespace demo

#endif // !BLOCK_PROCESS_H

BlockProcess.cpp

#include "BlockProcess.h"

namespace demo {

BlockProcess::BlockProcess( const std::string& strName ) {
    hMutex_ = CreateMutex( nullptr, FALSE, strName.c_str() );
} 

BlockProcess::~BlockProcess() {
    CloseHandle( hMutex_ );
}

bool BlockProcess::isBlocked() const {
    return (hMutex_ == nullptr || GetLastError() == ERROR_ALREADY_EXISTS);
}

} // namespace demo

私の質問はまだ部分的に同じremoving windows dependenciesです.#include <Windows.h>boost

4

1 に答える 1