Client-Library and CS-Library context-level routines are listed in Table 2-26. Thread-safe calls to context-level routines abide by the following restrictions:
Calls to cs_ctx_alloc and cs_ctx_drop must not occur simultaneously with any other call to cs_ctx_alloc or cs_ctx_drop.
Calls to ct_init and ct_exit must not occur simultaneously with any other call to ct_init or ct_exit.
If a CS_CONTEXT structure is shared by different threads, and thread-unsafe calls are made on that CS_CONTEXT structure, then all calls to context-level routines for that CS_CONTEXT must be serialized. The thread-unsafe context-level calls are indicated in Table 2-26.
Routine name |
Thread-safe calls |
Thread-unsafe calls |
Notes |
---|---|---|---|
cs_calc |
All. |
||
cs_cmp |
All. |
||
cs_config |
When action is CS_GET. |
When action is CS_SET or CS_XCLEAR. |
|
cs_convert |
All. |
If CS_LOCALE pointers are used within srcfmt or destfmt, access to the CS_LOCALE structures must be thread-safe. |
|
cs_ctx_alloc |
All |
Thread-unsafe for any context. For more information, see “Context initialization and cleanup.” |
|
cs_ctx_drop |
All, for any context. |
Thread-unsafe for any context. For more information, see “Context initialization and cleanup.” |
|
cs_ctx_global |
All calls after the first call has completed. |
First executed call only. |
|
cs_dt_crack |
All. |
||
cs_dt_info |
All. |
Access to the CS_LOCALE structure must be thread-safe. |
|
cs_diag |
When action is not CS_INIT. |
When action is CS_INIT. |
Only messages generated by the calling thread are visible. For more information, see “CS-Library error handling.” |
cs_loc_alloc |
All. |
Access to the CS_LOCALE structure must be thread-safe. See “Using CS_LOCALE structures.” |
|
cs_loc_drop |
All calls. |
||
cs_locale |
All calls. |
||
cs_objects |
All calls. |
||
cs_set_convert |
When action CS_GET. |
When action is CS_SET or CS_CLEAR. |
|
cs_setnull |
All calls that share the same context. |
||
cs_strbuild |
All calls. |
||
cs_strcmp |
All calls. |
||
cs_time |
All calls. |
||
cs_will_convert |
All calls. |
||
ct_callback |
When context is not NULL. |
Thread-unsafe at the connection level (all calls where context is NULL). See “Calling connection-level routines” for more information. |
|
ct_con_alloc |
All calls. |
||
ct_con_drop |
All calls. |
||
ct_config |
When action is CS_GET. |
When action is CS_SET or CS_CLEAR. |
|
ct_debug |
When context is not NULL. |
See “Calling connection-level routines” for the case when context is NULL. |
|
ct_exit |
All calls, for any context. |
Thread-unsafe for any context. For more information, see “Context initialization and cleanup.” |
|
ct_init |
All calls, for any context. |
Thread-unsafe for any context. For more information, see “Context initialization and cleanup.”. |
|
ct_poll |
Only when context is not NULL. |