0

好吧,我想在线程中使用 freeDiameter :) 我需要一些关于在多线程环境中使用库的建议。

让我回顾一个用例:假设我在一个类中实现了几个成员函数,以简单地为 freediameter C 函数调用提供包装器方法。在 MessageRequest 方法中,我想创建 DCC 消息并发送到直径服务器。好吧,为此我显然需要使用 fd_sess_new 和 fd_sess_getsid 函数来设置我的“会话 ID”AVP,还必须使用带有 fd_sess_state_store/fd_sess_state_retrieve 函数的 session_handler 变量来存储和检索 MessageResponse 上的会话处理程序对象。那么,由于会有多个并发引用 MessageRequest 方法,我想问一下 freediameter 中的对象和函数是否是线程安全的?我应该手动处理吗?每次我要使用方法中使用的变量时,我应该使用互斥锁吗?

谢谢,

4

1 回答 1

0

许多(全部?)函数都是线程安全的。例如,读取 and 的源代码fd_sess_state_storefd_sess_state_retrieve我们可以看到session->stlock在对数据结构进行操作时保留了 。至少对于那些人来说,不需要单独的锁。

于 2017-01-29T22:08:37.703 回答