[threading linux] Fix events with closed handles
Linux: Remove copy and destroy call in make_unique invokation which closes handles on all events. Testing: Add Wait test for Events set and unset.
This commit is contained in:
parent
4280a6451d
commit
f9d708265f
|
@ -174,8 +174,23 @@ TEST_CASE("Signal and Wait") {
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Wait on Event", "Event") {
|
TEST_CASE("Wait on Event", "Event") {
|
||||||
// TODO(bwrsandman):
|
auto evt = Event::CreateAutoResetEvent(false);
|
||||||
REQUIRE(true);
|
WaitResult result;
|
||||||
|
|
||||||
|
// Call wait on unset Event
|
||||||
|
result = Wait(evt.get(), false, 50ms);
|
||||||
|
REQUIRE(result == WaitResult::kTimeout);
|
||||||
|
|
||||||
|
// Call wait on set Event
|
||||||
|
evt->Set();
|
||||||
|
result = Wait(evt.get(), false, 50ms);
|
||||||
|
REQUIRE(result == WaitResult::kSuccess);
|
||||||
|
|
||||||
|
// Call wait on now consumed Event
|
||||||
|
result = Wait(evt.get(), false, 50ms);
|
||||||
|
REQUIRE(result == WaitResult::kTimeout);
|
||||||
|
|
||||||
|
// TODO(bwrsandman): test Reset() and Pulse()
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Wait on Semaphore", "Semaphore") {
|
TEST_CASE("Wait on Semaphore", "Semaphore") {
|
||||||
|
|
|
@ -356,7 +356,7 @@ std::unique_ptr<Event> Event::CreateAutoResetEvent(bool initial_state) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return std::make_unique<PosixEvent>(PosixEvent(fd));
|
return std::make_unique<PosixEvent>(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(dougvj)
|
// TODO(dougvj)
|
||||||
|
|
Loading…
Reference in New Issue