Skip to content

Commit 3790e4e

Browse files
committed
Handle EINTR in destructor
1 parent 35e19bb commit 3790e4e

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

threadpool.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,10 @@ ThreadPool::~ThreadPool()
102102
int ret = 0;
103103
// make sure all thread finish its jobs.
104104
for (unsigned int i = 0; i < _thread_pool.size(); ++i) {
105-
ret = sem_timedwait(&_available_work, &DESTROY_TIMEOUT);
105+
do {
106+
ret = sem_timedwait(&_available_work, &DESTROY_TIMEOUT);
107+
} while (0 != ret && EINTR == errno);
108+
106109
if (0 != ret) {
107110
std::cerr << "Timeout, stop ThreadPool" << std::endl;
108111
break;

0 commit comments

Comments
 (0)