Quellcode durchsuchen

Moved lock inside loop in PollService::process()

Paul-Louis Ageneau vor 2 Jahren
Ursprung
Commit
9d41feadfa
1 geänderte Dateien mit 5 neuen und 3 gelöschten Zeilen
  1. 5 3
      src/impl/pollservice.cpp

+ 5 - 3
src/impl/pollservice.cpp

@@ -104,11 +104,13 @@ void PollService::prepare(std::vector<struct pollfd> &pfds, optional<clock::time
 }
 
 void PollService::process(std::vector<struct pollfd> &pfds) {
-	std::unique_lock lock(mMutex);
-
 	auto it = pfds.begin();
-	mInterrupter->process(*it++);
+	if (it != pfds.end()) {
+		std::unique_lock lock(mMutex);
+		mInterrupter->process(*it++);
+	}
 	while (it != pfds.end()) {
+		std::unique_lock lock(mMutex);
 		socket_t sock = it->fd;
 		auto jt = mSocks->find(sock);
 		if (jt != mSocks->end()) {