好吧,我想用freeDiameter和线程:) 我需要一些关于在多线程环境中使用库的建议。
让我回顾一下用例: 假设我在类中实现了几个成员函数,只是在freediameter C函数调用上提供包装器方法。 在MessageRequest方法中,我想创建DCC消息并发送到直径服务器。好吧,为此,我显然需要使用fd_sess_new和fd_sess_getsid函数来设置我的“Session-ID”AVP,还必须使用session_handler变量和fd_sess_state_store / fd_sess_state_retrieve函数来存储和检索MessageResponse上的会话处理程序对象。那么,因为将会有几个并发引用MessageRequest方法,我想问一下freediameter中的对象和函数是否是线程安全的?我应该手动处理吗?每次我要使用方法中使用的变量时,我应该使用互斥吗?
谢谢,
答案 0 :(得分:0)
许多(所有?)函数都是线程安全的。例如,阅读fd_sess_state_store
和fd_sess_state_retrieve
的来源,我们可以看到在对数据结构进行操作时保留了session->stlock
。至少对于那些人来说,没有必要单独锁定。