Skip to content

Commit 8bad200

Browse files
vasily-sviridovapolukhin
authored andcommitted
feat third_party: import version concurrentqueue/v1.0.5
helps in internal testing Closes: #1170 Tests: протестировано CI --- Pull Request resolved: #1169 Co-authored-by: antoshkka <antoshkka@userver.tech> commit_hash:c8f5c6e81d6a3dc95c64dd61f744e2b9f77324fe
1 parent e6b4fe4 commit 8bad200

File tree

5 files changed

+458
-414
lines changed

5 files changed

+458
-414
lines changed

third_party/Readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
This folder contains source codes from following open source projects:
44

55
* pfr: https://github.com/boostorg/pfr/releases/tag/boost-1.90.0
6-
* moodycamel: https://github.com/cameron314/concurrentqueue/releases/tag/v1.0.4
6+
* moodycamel: https://github.com/cameron314/concurrentqueue/releases/tag/v1.0.5
77
* rapidjson: https://github.com/Tencent/rapidjson/commit/083f359f5c36198accc2b9360ce1e32a333231d9 with RAPIDJSON_HAS_STDSTRING defined in rapidjson.h
88
* date: https://github.com/HowardHinnant/date/tree/v3.0.1
99
* uboost_coro: see uboost_coro/README.md

third_party/moodycamel/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
These headers are imported from https://github.com/cameron314/concurrentqueue
22

3-
Commit: https://github.com/cameron314/concurrentqueue/commit/6dd38b8a1dbaa7863aa907045f32308a56a6ff5d
3+
Commit: https://github.com/cameron314/concurrentqueue/commit/9afb99746f0f5fc94ac8aef737053ae0481ba8d1
44

55
# moodycamel::ConcurrentQueue<T>
66

third_party/moodycamel/include/moodycamel/blockingconcurrentqueue.h

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,18 @@ class BlockingConcurrentQueue
5656
// includes making the memory effects of construction visible, possibly with a
5757
// memory barrier).
5858
explicit BlockingConcurrentQueue(size_t capacity = 6 * BLOCK_SIZE)
59-
: inner(capacity), sema(create<LightweightSemaphore, ssize_t, int>(0, (int)Traits::MAX_SEMA_SPINS), &BlockingConcurrentQueue::template destroy<LightweightSemaphore>)
59+
: inner(capacity), sema(create<LightweightSemaphore, ssize_t, int>(0, static_cast<int>(Traits::MAX_SEMA_SPINS)), &BlockingConcurrentQueue::template destroy<LightweightSemaphore>)
6060
{
61-
assert(reinterpret_cast<ConcurrentQueue*>((BlockingConcurrentQueue*)1) == &((BlockingConcurrentQueue*)1)->inner && "BlockingConcurrentQueue must have ConcurrentQueue as its first member");
61+
assert(reinterpret_cast<ConcurrentQueue*>(reinterpret_cast<BlockingConcurrentQueue*>(1)) == &(reinterpret_cast<BlockingConcurrentQueue*>(1))->inner && "BlockingConcurrentQueue must have ConcurrentQueue as its first member");
6262
if (!sema) {
6363
MOODYCAMEL_THROW(std::bad_alloc());
6464
}
6565
}
6666

6767
BlockingConcurrentQueue(size_t minCapacity, size_t maxExplicitProducers, size_t maxImplicitProducers)
68-
: inner(minCapacity, maxExplicitProducers, maxImplicitProducers), sema(create<LightweightSemaphore, ssize_t, int>(0, (int)Traits::MAX_SEMA_SPINS), &BlockingConcurrentQueue::template destroy<LightweightSemaphore>)
68+
: inner(minCapacity, maxExplicitProducers, maxImplicitProducers), sema(create<LightweightSemaphore, ssize_t, int>(0, static_cast<int>(Traits::MAX_SEMA_SPINS)), &BlockingConcurrentQueue::template destroy<LightweightSemaphore>)
6969
{
70-
assert(reinterpret_cast<ConcurrentQueue*>((BlockingConcurrentQueue*)1) == &((BlockingConcurrentQueue*)1)->inner && "BlockingConcurrentQueue must have ConcurrentQueue as its first member");
70+
assert(reinterpret_cast<ConcurrentQueue*>(reinterpret_cast<BlockingConcurrentQueue*>(1)) == &(reinterpret_cast<BlockingConcurrentQueue*>(1))->inner && "BlockingConcurrentQueue must have ConcurrentQueue as its first member");
7171
if (!sema) {
7272
MOODYCAMEL_THROW(std::bad_alloc());
7373
}
@@ -179,12 +179,13 @@ class BlockingConcurrentQueue
179179
inline bool enqueue_bulk(It itemFirst, size_t count)
180180
{
181181
if ((details::likely)(inner.enqueue_bulk(std::forward<It>(itemFirst), count))) {
182-
sema->signal((LightweightSemaphore::ssize_t)(ssize_t)count);
182+
assert(static_cast<ssize_t>(count) >= 0);
183+
sema->signal(static_cast<LightweightSemaphore::ssize_t>(static_cast<ssize_t>(count)));
183184
return true;
184185
}
185186
return false;
186187
}
187-
188+
188189
// Enqueues several items using an explicit producer token.
189190
// Allocates memory if required. Only fails if memory allocation fails
190191
// (or Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed).
@@ -195,7 +196,8 @@ class BlockingConcurrentQueue
195196
inline bool enqueue_bulk(producer_token_t const& token, It itemFirst, size_t count)
196197
{
197198
if ((details::likely)(inner.enqueue_bulk(token, std::forward<It>(itemFirst), count))) {
198-
sema->signal((LightweightSemaphore::ssize_t)(ssize_t)count);
199+
assert(static_cast<ssize_t>(count) >= 0);
200+
sema->signal(static_cast<LightweightSemaphore::ssize_t>(static_cast<ssize_t>(count)));
199201
return true;
200202
}
201203
return false;
@@ -264,12 +266,13 @@ class BlockingConcurrentQueue
264266
inline bool try_enqueue_bulk(It itemFirst, size_t count)
265267
{
266268
if (inner.try_enqueue_bulk(std::forward<It>(itemFirst), count)) {
267-
sema->signal((LightweightSemaphore::ssize_t)(ssize_t)count);
269+
assert(static_cast<ssize_t>(count) >= 0);
270+
sema->signal(static_cast<LightweightSemaphore::ssize_t>(static_cast<ssize_t>(count)));
268271
return true;
269272
}
270273
return false;
271274
}
272-
275+
273276
// Enqueues several items using an explicit producer token.
274277
// Does not allocate memory. Fails if not enough room to enqueue.
275278
// Note: Use std::make_move_iterator if the elements should be moved
@@ -279,7 +282,8 @@ class BlockingConcurrentQueue
279282
inline bool try_enqueue_bulk(producer_token_t const& token, It itemFirst, size_t count)
280283
{
281284
if (inner.try_enqueue_bulk(token, std::forward<It>(itemFirst), count)) {
282-
sema->signal((LightweightSemaphore::ssize_t)(ssize_t)count);
285+
assert(static_cast<ssize_t>(count) >= 0);
286+
sema->signal(static_cast<LightweightSemaphore::ssize_t>(static_cast<ssize_t>(count)));
283287
return true;
284288
}
285289
return false;
@@ -327,13 +331,14 @@ class BlockingConcurrentQueue
327331
inline size_t try_dequeue_bulk(It itemFirst, size_t max)
328332
{
329333
size_t count = 0;
330-
max = (size_t)sema->tryWaitMany((LightweightSemaphore::ssize_t)(ssize_t)max);
334+
assert(static_cast<ssize_t>(max) >= 0);
335+
max = static_cast<size_t>(sema->tryWaitMany(static_cast<LightweightSemaphore::ssize_t>(static_cast<ssize_t>(max))));
331336
while (count != max) {
332337
count += inner.template try_dequeue_bulk<It&>(itemFirst, max - count);
333338
}
334339
return count;
335340
}
336-
341+
337342
// Attempts to dequeue several elements from the queue using an explicit consumer token.
338343
// Returns the number of items actually dequeued.
339344
// Returns 0 if all producer streams appeared empty at the time they
@@ -343,7 +348,8 @@ class BlockingConcurrentQueue
343348
inline size_t try_dequeue_bulk(consumer_token_t& token, It itemFirst, size_t max)
344349
{
345350
size_t count = 0;
346-
max = (size_t)sema->tryWaitMany((LightweightSemaphore::ssize_t)(ssize_t)max);
351+
assert(static_cast<ssize_t>(max) >= 0);
352+
max = static_cast<size_t>(sema->tryWaitMany(static_cast<LightweightSemaphore::ssize_t>(static_cast<ssize_t>(max))));
347353
while (count != max) {
348354
count += inner.template try_dequeue_bulk<It&>(token, itemFirst, max - count);
349355
}
@@ -447,13 +453,14 @@ class BlockingConcurrentQueue
447453
inline size_t wait_dequeue_bulk(It itemFirst, size_t max)
448454
{
449455
size_t count = 0;
450-
max = (size_t)sema->waitMany((LightweightSemaphore::ssize_t)(ssize_t)max);
456+
assert(static_cast<ssize_t>(max) >= 0);
457+
max = static_cast<size_t>(sema->waitMany(static_cast<LightweightSemaphore::ssize_t>(static_cast<ssize_t>(max))));
451458
while (count != max) {
452459
count += inner.template try_dequeue_bulk<It&>(itemFirst, max - count);
453460
}
454461
return count;
455462
}
456-
463+
457464
// Attempts to dequeue several elements from the queue.
458465
// Returns the number of items actually dequeued, which can
459466
// be 0 if the timeout expires while waiting for elements,
@@ -465,7 +472,8 @@ class BlockingConcurrentQueue
465472
inline size_t wait_dequeue_bulk_timed(It itemFirst, size_t max, std::int64_t timeout_usecs)
466473
{
467474
size_t count = 0;
468-
max = (size_t)sema->waitMany((LightweightSemaphore::ssize_t)(ssize_t)max, timeout_usecs);
475+
assert(static_cast<ssize_t>(max) >= 0);
476+
max = static_cast<size_t>(sema->waitMany(static_cast<LightweightSemaphore::ssize_t>(static_cast<ssize_t>(max)), timeout_usecs));
469477
while (count != max) {
470478
count += inner.template try_dequeue_bulk<It&>(itemFirst, max - count);
471479
}
@@ -492,7 +500,8 @@ class BlockingConcurrentQueue
492500
inline size_t wait_dequeue_bulk(consumer_token_t& token, It itemFirst, size_t max)
493501
{
494502
size_t count = 0;
495-
max = (size_t)sema->waitMany((LightweightSemaphore::ssize_t)(ssize_t)max);
503+
assert(static_cast<ssize_t>(max) >= 0);
504+
max = static_cast<size_t>(sema->waitMany(static_cast<LightweightSemaphore::ssize_t>(static_cast<ssize_t>(max))));
496505
while (count != max) {
497506
count += inner.template try_dequeue_bulk<It&>(token, itemFirst, max - count);
498507
}
@@ -510,7 +519,8 @@ class BlockingConcurrentQueue
510519
inline size_t wait_dequeue_bulk_timed(consumer_token_t& token, It itemFirst, size_t max, std::int64_t timeout_usecs)
511520
{
512521
size_t count = 0;
513-
max = (size_t)sema->waitMany((LightweightSemaphore::ssize_t)(ssize_t)max, timeout_usecs);
522+
assert(static_cast<ssize_t>(max) >= 0);
523+
max = static_cast<size_t>(sema->waitMany(static_cast<LightweightSemaphore::ssize_t>(static_cast<ssize_t>(max)), timeout_usecs));
514524
while (count != max) {
515525
count += inner.template try_dequeue_bulk<It&>(token, itemFirst, max - count);
516526
}
@@ -537,7 +547,7 @@ class BlockingConcurrentQueue
537547
// Thread-safe.
538548
inline size_t size_approx() const
539549
{
540-
return (size_t)sema->availableApprox();
550+
return static_cast<size_t>(sema->availableApprox());
541551
}
542552

543553

@@ -548,7 +558,7 @@ class BlockingConcurrentQueue
548558
{
549559
return ConcurrentQueue::is_lock_free();
550560
}
551-
561+
552562

553563
private:
554564
template<typename U, typename A1, typename A2>
@@ -557,7 +567,7 @@ class BlockingConcurrentQueue
557567
void* p = (Traits::malloc)(sizeof(U));
558568
return p != nullptr ? new (p) U(std::forward<A1>(a1), std::forward<A2>(a2)) : nullptr;
559569
}
560-
570+
561571
template<typename U>
562572
static inline void destroy(U* p)
563573
{
@@ -566,7 +576,7 @@ class BlockingConcurrentQueue
566576
}
567577
(Traits::free)(p);
568578
}
569-
579+
570580
private:
571581
ConcurrentQueue inner;
572582
std::unique_ptr<LightweightSemaphore, void (*)(LightweightSemaphore*)> sema;

0 commit comments

Comments
 (0)