Details
-
Wish
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
An efficient multi-threaded application based on proton-c will want to have one thread blocked on pn_driver_wait if there's no other work for it to do. Unfortunately, pn_driver_wait does thread-unsafe things with internal driver data structures before and after it blocks on the FD set.
The alternatives are to quiesce all threads prior to calling pn_driver_wait (which is undesirable for performance reasons) or to divide pn_driver_wait into three sections, the first and third of which can be invoked with a lock held and the second of which (the poll call) can be invoked without a lock.
Alternatively, a driver API better suited to multi-threading could be developed.
Attachments
Issue Links
- duplicates
-
PROTON-1344 Provide C "proactor" API for multi-threaded proton applications
- Closed