Skip to content

thread pool and queue#20916

Closed
icing wants to merge 10 commits intocurl:masterfrom
icing:thrdpool+queue
Closed

thread pool and queue#20916
icing wants to merge 10 commits intocurl:masterfrom
icing:thrdpool+queue

Conversation

@icing
Copy link
Copy Markdown
Contributor

@icing icing commented Mar 13, 2026

  • new source files for thread pool and queue
  • test cases 3300 and 3301 for them
  • internal documentation

@icing icing added the feature-window A merge of this requires an open feature window label Mar 13, 2026
@github-actions github-actions bot added the tests label Mar 13, 2026
@icing icing requested a review from bagder March 13, 2026 09:51
@icing
Copy link
Copy Markdown
Contributor Author

icing commented Mar 21, 2026

@bagder ready for merge, next in line. Will continue on Monday with the other ones.

@bagder bagder requested a review from Copilot March 21, 2026 21:34
@bagder
Copy link
Copy Markdown
Member

bagder commented Mar 21, 2026

@aisle-analyzer

@aisle-research-bot
Copy link
Copy Markdown

aisle-research-bot bot commented Mar 21, 2026

🔒 Aisle Security Analysis

We found 1 potential security issue(s) in this PR:

# Severity Title
1 🔵 Low Invalid timespec in Curl_cond_timedwait() can cause pthread_cond_timedwait EINVAL and busy-loop DoS

See details in the comment below.


Analyzed PR: #20916 at commit d8a11c0

Last updated on: 2026-03-21T22:01:31Z

Copy link
Copy Markdown
Member

@bagder bagder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💯

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds new internal thread pool (Curl_thrdpool) and thread queue (Curl_thrdq) implementations to support asynchronous work item processing, along with unit tests and internal documentation.

Changes:

  • Introduce lib/thrdpool.* and lib/thrdqueue.* plus build integration.
  • Add unit tests unit3300/unit3301 and register them in the test harness.
  • Extend tracing/threads infrastructure (condvar wrappers + Curl_trc_feat_infof) and add internal documentation.

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 14 comments.

Show a summary per file
File Description
tests/unit/unit3301.c Adds unit tests for thread queue behavior (send/process/recv + event callback).
tests/unit/unit3300.c Adds unit tests for thread pool behavior (min/max threads, signaling, destroy modes).
tests/unit/Makefile.inc Registers new unit test sources in the unit test bundle.
tests/data/test3301 Adds test case metadata for unit3301.
tests/data/test3300 Adds test case metadata for unit3300.
tests/data/Makefile.am Registers new test case data files for distribution.
lib/thrdqueue.h Defines the thread queue API and callbacks.
lib/thrdqueue.c Implements the thread queue using llist + thread pool.
lib/thrdpool.h Defines the thread pool API and callbacks.
lib/thrdpool.c Implements the thread pool with worker slots, signaling, and idle waiting.
lib/curl_threads.h Adds cross-platform condition-variable types and APIs under USE_MUTEX.
lib/curl_threads.c Implements cross-platform condition-variable wrappers (signal/wait/timedwait).
lib/curl_trc.h Declares Curl_trc_feat_infof() for feature-based verbose logging.
lib/curl_trc.c Implements Curl_trc_feat_infof().
lib/memdebug.c Ensures memdebug cleanup unlocks after closing the logfile.
lib/Makefile.inc Adds new lib sources/headers to the build source lists.
docs/internals/THRDPOOL+QUEUE.md Documents thread pool/queue design, operation, and safety notes.
docs/Makefile.am Registers the new internal documentation page.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@icing icing requested a review from bagder March 23, 2026 12:13
@bagder bagder closed this in 6f9f4b3 Mar 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature-window A merge of this requires an open feature window tests

Development

Successfully merging this pull request may close these issues.

3 participants