diff options
author | David Storch <david.storch@mongodb.com> | 2020-03-04 14:15:27 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-03-06 20:40:35 +0000 |
commit | 4f1af057ed0434099fe13dbaa50b00589d84bb48 (patch) | |
tree | 7afc53a88e080feda6ad9267396091bc95d2552a /src/mongo/util | |
parent | e628734fdce256588793b8eda0998f04f5b696e6 (diff) | |
download | mongo-4f1af057ed0434099fe13dbaa50b00589d84bb48.tar.gz |
SERVER-46631 Optimize acquiring a ticket from TicketHolder in the uncontended case
Diffstat (limited to 'src/mongo/util')
-rw-r--r-- | src/mongo/util/concurrency/ticketholder.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mongo/util/concurrency/ticketholder.cpp b/src/mongo/util/concurrency/ticketholder.cpp index 45bf7e51bc2..d087b215da4 100644 --- a/src/mongo/util/concurrency/ticketholder.cpp +++ b/src/mongo/util/concurrency/ticketholder.cpp @@ -95,6 +95,11 @@ void TicketHolder::waitForTicket(OperationContext* opCtx) { } bool TicketHolder::waitForTicketUntil(OperationContext* opCtx, Date_t until) { + // Attempt to get a ticket without waiting in order to avoid expensive time calculations. + if (sem_trywait(&_sem) == 0) { + return true; + } + const Milliseconds intervalMs(500); struct timespec ts; |