Document ConcurrentQueue and de-inline its implementation

ConcurrentQueue is currently used only by two classes and a test, but
modifying concurrent_queue.h requires recompiling 30 source files. None
of the member functions is so lightweight as to make it worth inlining.

An alternative to `@note ConcurrentQueue is unable to execute jobs if
@p threadCount == 0.` is `assert(threadCount != 0);`. But this would
force classes that contain a ConcurrentQueue data member to always start
a thread, even if they detect at runtime that they are never going to
enqueue a job.

Add Job type alias to avoid repeating the type.

Use default member initializers instead of the member initializer list
to make it clear [to the reader of the header] that no data member is
left uninitialized.
This commit is contained in:
Igor Kushnir
2021-03-18 09:10:51 +02:00
committed by Luis Ángel San Martín
parent 2655613543
commit 61cd245037
4 changed files with 152 additions and 120 deletions

View File

@ -4,4 +4,6 @@ PATH_TO_common = ../../common
INCLUDEPATH += $$PATH_TO_common
HEADERS += $${PATH_TO_common}/concurrent_queue.h
SOURCES += concurrent_queue_test.cpp
SOURCES += \
$${PATH_TO_common}/concurrent_queue.cpp \
concurrent_queue_test.cpp