LunaHook-mirror/LunaHost/GUI/lockedqueue.hpp
恍兮惚兮 c94547bbc9 everyone
This reverts commit 975f049797bcd6b9de0e11f9a926d5ac3ec79ef8.

1

1

Revert "Update QtLoader_inline.cpp"

This reverts commit 372dd2dc3e2f23c810f13e51437904fac1422c04.

Update QtLoader_inline.cpp

Update QtLoader_inline.cpp

1

1

1

Update CMakeLists.txt

1

1
2024-03-30 02:32:54 +08:00

29 lines
551 B
C++

template<class T>
class lockedqueue{
std::mutex lock;
std::queue<T>data;
HANDLE hsema;
public:
lockedqueue(){
hsema=CreateSemaphore(NULL,0,65535,NULL);
}
~lockedqueue(){
CloseHandle(hsema);
}
void push(T _){
std::lock_guard _l(lock);
data.push(std::move(_));
ReleaseSemaphore(hsema,1,NULL);
}
T pop(){
WaitForSingleObject(hsema,INFINITE);
std::lock_guard _l(lock);
auto _=data.front();
data.pop();
return _;
}
bool empty(){
std::lock_guard _l(lock);
return data.empty();
}
};