2017-01-28 3 views
0

まあ、私はスレッドでfreeDiameterを使用したいです:) 私はマルチスレッド環境でライブラリを使用するためのアドバイスが必要です。freeDiameterとマルチスレッド

ユースケースを見直してみましょう: freediameter C関数呼び出しで単にラッパーメソッドを提供するために、クラス内にいくつかのメンバー関数を実装しました。 MessageRequestメソッドでは、DCCメッセージを作成して直径サーバに送信したいと考えています。これを行うには、私は明らかに私の "Session-ID" AVPをセットアップするためにfd_sess_newとfd_sess_getsid関数を使用する必要があります。また、MessageResponseのセッションハンドラオブジェクトを格納し検索するfd_sess_state_store/fd_sess_state_retrieve関数でsession_handler変数を使用する必要があります。ですから、MessageRequestメソッドをいくつか同時に参照することになるので、私はfreediameterのオブジェクトと関数がスレッドセーフであるかどうか尋ねたいと思います。手動で処理する必要がありますか?メソッドで使われている変数を使うつもりなら、毎回mutexを使うべきですか?

ありがとう、

答えて

0

多くの(すべて?)関数はスレッドセーフです。例えば、fd_sess_state_storefd_sess_state_retrieveのソースを読むと、session->stlockがデータ構造上で動作している間保持されていることがわかります。少なくともそれらのために、個別のロックを取る必要はありません。