State placement
- Config/static/shared data in pData (per-action).
- Live handles/buffers in wrkrInstanceData_t (per-worker).
- No sharing of WID across workers.
Serialization
- Inherently serial resources (e.g., a shared stream) guarded by a mutex in pData.
- If any library thread or callback touches shared state, define a pthread_rwlock_t and document who reads/writes.
Entry points
-
createWrkrInstance/freeWrkrInstanceallocate/free WID only. -
doAction/tx callbacks may run concurrently across workers; they never share WID.
Docs in code
- Top-of-file “Concurrency & Locking” block explains the above for this module.
- Doxygen comments on pData/WID typedefs describe lifetime & locking rules.
Testing
- Run with
queue.workerThreads > 1. CI already runs TSAN on the full suite.
Style
- Commit subject ≤ 65 chars; aim for 62. ASCII only. See
CONTRIBUTING.md.