Implement concurrent test execution #1

Open
opened 2024-09-02 15:08:45 +00:00 by RYAN · 0 comments
Owner

Test execution could see a significant performance boost if test cases would be allowed to execute in parallel.

  • Implement multithreaded scheduler.
    • class queue - implements a multithreaded queue.
    • queue::enqueue(...) - enqueue function.
    • queue::drain() - spawn threads and drain the queue, configurable thread count?
  • Implement thread_local utilities::current<T> for tracking the current test.

The queue could be implemented using an atomic counter, which points to the next function to execute. This avoids the need for a mutex.

Test result output should be synchronized and output after the queue is drained.

Note

Concurrect test execution should be disabled by default, unless enabled using the --parallel command-line option.

Test execution could see a significant performance boost if test cases would be allowed to execute in parallel. - [ ] Implement multithreaded scheduler. - [ ] `class queue` - implements a multithreaded queue. - [ ] `queue::enqueue(...)` - enqueue function. - [ ] `queue::drain()` - spawn threads and drain the queue, configurable thread count? - [ ] Implement `thread_local` `utilities::current<T>` for tracking the current test. The queue could be implemented using an atomic counter, which points to the next function to execute. This avoids the need for a mutex. Test result output should be synchronized and output after the queue is drained. > [!NOTE] > Concurrect test execution should be disabled by default, unless enabled using the `--parallel` command-line option.
RYAN added the
Kind/Feature
Priority
Medium
labels 2024-09-02 15:08:45 +00:00
RYAN added this to the Future: v0.2.0 milestone 2024-09-02 15:08:59 +00:00
RYAN added a new dependency 2024-09-03 00:01:53 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Depends on
Reference: arc/libarc-validate#1
No description provided.