現在、G-Wan Web サーバーを使用して C 言語で Web アプリを開発しています。G-Wan に含まれる KV ストアを使用して、生成された Web ページとページが表示された回数のカウンターを保存したいと考えています。 .
KV ストアは、構造などの複雑なデータを格納するために使用できるハッシュ マップです。
これは、HTML データとカウンターである整数を格納するために使用したものです。
typedef struct
{
char* HTML;
int nbDisplays;
} my_data;
Web サーバーは複数のスレッドを使用しており、KV ストアはスレッド間で共有されています。
フィールド nbDisplays を更新するために、私はアトミック操作 __sync_fetch_and_add (...) を使用していますが、ポインターであるフィールド HTML を更新する最良の方法が何であるかわかりません。
それは良いですか:
- KV に保存されている既存の構造を使用して新しい構造を構築し、現在の値を取得して、G-WAN が提供する add() 関数を使用して KV ストアに追加します (この関数は古い構造を新しい構造に置き換えます)。
- または、KV ストアに格納されている構造体の値を直接更新するには?
私はマルチスレッド環境でのプログラミングに慣れておらず、いくつかの「奇妙な」動作に怯えています...