Alexander A. Klimov
df63a78ad9
WIP
2024-12-05 13:21:48 +01:00
Alexander A. Klimov
7097bdb97d
Revert "[Refactor] CpuBoundWork#CpuBoundWork(): require an io_context::strand"
...
This reverts commit 5ca0d7102af59ca309fa9c071d5280de4e096b5c.
2024-12-05 13:21:48 +01:00
Alexander A. Klimov
bb380d33e0
Introduce AsioConditionVariable
2024-12-05 13:21:48 +01:00
Alexander A. Klimov
11f0a1d34a
Rename AsioConditionVariable to AsioEvent
...
The current implementation is rather similar to Python's threading.Event, than to a CV.
2024-12-05 13:21:48 +01:00
Alexander A. Klimov
21a0dcbfcb
Revert "CpuBoundWork#CpuBoundWork(): don't spin on atomic int to acquire slot"
...
This reverts commit 7c4b70f8998b2081bee3610cb03b9b8b5cf04e7d.
2024-12-05 10:38:27 +01:00
Alexander A. Klimov
7c4b70f899
CpuBoundWork#CpuBoundWork(): don't spin on atomic int to acquire slot
...
This is inefficient and involves unfair scheduling. The latter implies
possible bad surprises regarding waiting durations on busy nodes. Instead,
use AsioConditionVariable#Wait() if there are no free slots. It's notified
by others' CpuBoundWork#~CpuBoundWork() once finished.
2024-12-05 10:18:48 +01:00
Alexander A. Klimov
5ca0d7102a
[Refactor] CpuBoundWork#CpuBoundWork(): require an io_context::strand
2024-12-05 10:18:46 +01:00
Alexander A. Klimov
52d53ec1ba
CpuBoundWork#~CpuBoundWork(): just call #Done() to deduplicate code
2024-12-05 10:17:16 +01:00
Alexander A. Klimov
2cb282eb9d
Remove unused IoBoundWorkSlot
2024-12-05 10:17:16 +01:00
Eric Lippmann
c7293de91d
IoEngine: Always log coroutine exception diagnostics
...
While analyzing a possible memory leak, we encountered several coroutine
exception messages, which unfortunately do not provide any information
about what exactly went wrong, as exception diagnostics were previously
only logged at the notice level.
2024-02-08 12:09:06 +01:00
Alexander A. Klimov
9585a63fa0
Introduce IoEngine::YieldCurrentCoroutine()
2022-03-02 16:39:44 +01:00
Alexander A. Klimov
647f1547a9
Generalize I/O timeout emulation
2020-06-17 10:31:40 +02:00
Alexander A. Klimov
b65aed1dd3
IoEngine#SpawnCoroutine(): always terminate coroutines cleanly
2020-02-19 10:51:26 +01:00
Alexander A. Klimov
0ed0f73d9d
IoEngine#SpawnCoroutine(): remove redundand overload
2020-02-05 15:31:57 +01:00
Alexander A. Klimov
d98493c90f
IoEngine#SpawnCoroutine(): don't copy parameter
2020-02-05 15:30:03 +01:00
Michael Friedrich
f62f2eb25e
Boost Coroutines: Increase the default stack size from 64 to 256KB
...
refs #7532
2019-12-13 17:20:06 +01:00
Michael Friedrich
2c0e0da2d9
Introduce IoEngine::SpawnCoroutine wrapping asio::spawn and Boost exceptions
...
This is required to
- catch all exceptions and wrap them into Boost exceptions. They
are the only ones allowed with Boost.Coroutine.
- set a dedicated coroutine stack size for Windows.
refs #7431
2019-09-09 16:40:35 +02:00
Michael Friedrich
5fa7331cc9
Quality: Replace deprecated Boost IO service code
...
https://github.com/boostorg/asio/issues/110
https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp03/services/logger_service.hpp
2019-09-09 15:27:57 +02:00
Michael Insel
a6a0631e99
Unify copyright headers
...
Update (left over) copyright headers to generic copyright headers.
2019-05-24 16:25:32 +02:00
Alexander A. Klimov
79220ee647
io-engine.hpp: fix missing namespace
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
8b3efe5759
Introduce AsioConditionVariable
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
b384f859c9
Make IoEngine::m_CpuBoundSemaphore signed
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
282f8fd173
IoEngine: explicitly join I/O threads
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
ac72ca4ae6
Don't warn that Boost.Coroutine v1 is deprecated
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
d7b465ce74
Implement IoBoundWorkSlot
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
2d7714802d
Allow CpuBoundWork to be done before end of scope
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
c547e9a863
Implement basic I/O engine
2019-04-01 11:40:14 +02:00