我之前曾问过这个关于删除 Windows 库依赖项的问题删除
Windows 库依赖项。用户:https ://stackoverflow.com/users/214671/matteo-italia已经解释过,Threads
您可以用替换 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
?