0

私は C で GLib/GObject を使用していますが、C# や Java などに存在する静的コンストラクターのようなものが必要になる状況がいくつかありました。

静的コンストラクターは、オブジェクトの最初の作成時に一度だけ実行されます。C# または Java の静的コンストラクターの優れた機能は、それらがスレッド セーフであることです。複数のスレッドが同時にそのクラスのオブジェクトを作成したとしても、単一のスレッドのみが静的コンストラクターを実行し、他のスレッド (通常の非静的) コンストラクターはそのスレッドが終了するまでブロックされます。

これにより、静的コンストラクターは、スレッドセーフな静的フィールドの初期化 (C/Gobject では単なるグローバル変数) に最適な場所になります。

そのような機能が必要になるケースが思いつかない場合は、静的コンストラクターで簡単に解決できる次の質問を確認してください

4

1 に答える 1