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