10. Thread Safety and Channel Management#

10.1. Channel Rules#

  • Call allocateChannelId() before passing a channel to handleGetObject(), handlePutObject(), or poll().

  • Use one channel from one thread at a time.

  • Call poll() on the same channel used for asynchronous submission.

  • Do not free a channel until all operations submitted on that channel have completed.

10.2. Shared Resources#

Applications must synchronize access to shared application resources such as request queues, control-path connections, and memory buffers. cuObjServer channel allocation and free operations are serialized by the library, but I/O submission requires the application to use distinct channels for concurrent callers.

10.3. Telemetry Configuration#

Configure telemetry before constructing cuObjServer objects. Do not change telemetry stream configuration while server objects using telemetry are active.